@ttt-productions/ttt-core 0.79.68 → 0.79.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/constants/business-admin.d.ts +2 -0
  2. package/dist/constants/business-admin.d.ts.map +1 -1
  3. package/dist/constants/business-admin.js +2 -0
  4. package/dist/constants/business-admin.js.map +1 -1
  5. package/dist/doc-schemas/commissions.d.ts +4 -4
  6. package/dist/doc-schemas/content.d.ts +2 -2
  7. package/dist/doc-schemas/erasure-fates.d.ts +2 -0
  8. package/dist/doc-schemas/erasure-fates.d.ts.map +1 -1
  9. package/dist/doc-schemas/erasure-fates.js +3 -0
  10. package/dist/doc-schemas/erasure-fates.js.map +1 -1
  11. package/dist/doc-schemas/index.d.ts +1 -0
  12. package/dist/doc-schemas/index.d.ts.map +1 -1
  13. package/dist/doc-schemas/index.js +1 -0
  14. package/dist/doc-schemas/index.js.map +1 -1
  15. package/dist/doc-schemas/media-activation-jobs.d.ts +3 -0
  16. package/dist/doc-schemas/media-activation-jobs.d.ts.map +1 -1
  17. package/dist/doc-schemas/media-assets.d.ts +11 -2
  18. package/dist/doc-schemas/media-assets.d.ts.map +1 -1
  19. package/dist/doc-schemas/media-assets.js +5 -0
  20. package/dist/doc-schemas/media-assets.js.map +1 -1
  21. package/dist/doc-schemas/media-copy-intents.d.ts +2 -0
  22. package/dist/doc-schemas/media-copy-intents.d.ts.map +1 -1
  23. package/dist/doc-schemas/messaging.d.ts +1 -1
  24. package/dist/doc-schemas/moderation.d.ts +3 -1
  25. package/dist/doc-schemas/moderation.d.ts.map +1 -1
  26. package/dist/doc-schemas/public-documents.d.ts +5 -5
  27. package/dist/doc-schemas/registry.d.ts +172 -17
  28. package/dist/doc-schemas/registry.d.ts.map +1 -1
  29. package/dist/doc-schemas/registry.js +3 -0
  30. package/dist/doc-schemas/registry.js.map +1 -1
  31. package/dist/doc-schemas/safety/evidence.d.ts +8 -0
  32. package/dist/doc-schemas/safety/evidence.d.ts.map +1 -1
  33. package/dist/doc-schemas/safety/report.d.ts +1 -0
  34. package/dist/doc-schemas/safety/report.d.ts.map +1 -1
  35. package/dist/doc-schemas/social.d.ts +4 -4
  36. package/dist/doc-schemas/square-announcement-jobs.d.ts +6 -6
  37. package/dist/doc-schemas/system-slots.d.ts +50 -0
  38. package/dist/doc-schemas/system-slots.d.ts.map +1 -0
  39. package/dist/doc-schemas/system-slots.js +56 -0
  40. package/dist/doc-schemas/system-slots.js.map +1 -0
  41. package/dist/doc-schemas/user.d.ts +5 -5
  42. package/dist/doc-schemas/work-project.d.ts +1 -1
  43. package/dist/index.d.ts +1 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/media/domain-events-admin.d.ts +28 -0
  48. package/dist/media/domain-events-admin.d.ts.map +1 -1
  49. package/dist/media/domain-events-admin.js +24 -0
  50. package/dist/media/domain-events-admin.js.map +1 -1
  51. package/dist/media/domain-events.d.ts +26 -0
  52. package/dist/media/domain-events.d.ts.map +1 -1
  53. package/dist/media/domain-events.js +3 -1
  54. package/dist/media/domain-events.js.map +1 -1
  55. package/dist/media/edge-serving-contract.d.ts +3 -0
  56. package/dist/media/edge-serving-contract.d.ts.map +1 -1
  57. package/dist/media/file-origin.d.ts +1 -0
  58. package/dist/media/file-origin.d.ts.map +1 -1
  59. package/dist/media/file-origin.js +2 -0
  60. package/dist/media/file-origin.js.map +1 -1
  61. package/dist/media/pending-media.d.ts +305 -0
  62. package/dist/media/pending-media.d.ts.map +1 -1
  63. package/dist/media/start-upload.d.ts +1 -0
  64. package/dist/media/start-upload.d.ts.map +1 -1
  65. package/dist/media/target-info.d.ts +18 -2
  66. package/dist/media/target-info.d.ts.map +1 -1
  67. package/dist/media/target-info.js +8 -0
  68. package/dist/media/target-info.js.map +1 -1
  69. package/dist/media/ttt-media-specs.d.ts.map +1 -1
  70. package/dist/media/ttt-media-specs.js +38 -3
  71. package/dist/media/ttt-media-specs.js.map +1 -1
  72. package/dist/media/upload-tray-display.d.ts.map +1 -1
  73. package/dist/media/upload-tray-display.js +1 -0
  74. package/dist/media/upload-tray-display.js.map +1 -1
  75. package/dist/paths/collections.d.ts +2 -0
  76. package/dist/paths/collections.d.ts.map +1 -1
  77. package/dist/paths/collections.js +4 -0
  78. package/dist/paths/collections.js.map +1 -1
  79. package/dist/paths/path-builders.d.ts +2 -0
  80. package/dist/paths/path-builders.d.ts.map +1 -1
  81. package/dist/paths/path-builders.js +2 -0
  82. package/dist/paths/path-builders.js.map +1 -1
  83. package/dist/schemas/admin.d.ts +37 -9
  84. package/dist/schemas/admin.d.ts.map +1 -1
  85. package/dist/schemas/admin.js +20 -1
  86. package/dist/schemas/admin.js.map +1 -1
  87. package/dist/schemas/public-documents.d.ts +2 -2
  88. package/dist/schemas/work-project-management.d.ts +8 -8
  89. package/dist/system-slots/guide-videos.d.ts +36 -0
  90. package/dist/system-slots/guide-videos.d.ts.map +1 -0
  91. package/dist/system-slots/guide-videos.js +19 -0
  92. package/dist/system-slots/guide-videos.js.map +1 -0
  93. package/dist/system-slots/index.d.ts +3 -0
  94. package/dist/system-slots/index.d.ts.map +1 -0
  95. package/dist/system-slots/index.js +3 -0
  96. package/dist/system-slots/index.js.map +1 -0
  97. package/dist/system-slots/system-slots.d.ts +92 -0
  98. package/dist/system-slots/system-slots.d.ts.map +1 -0
  99. package/dist/system-slots/system-slots.js +55 -0
  100. package/dist/system-slots/system-slots.js.map +1 -0
  101. package/dist/types/audit.d.ts +1 -1
  102. package/dist/types/audit.d.ts.map +1 -1
  103. package/dist/types/audit.js.map +1 -1
  104. package/dist/upload-variables/index.d.ts +1 -0
  105. package/dist/upload-variables/index.d.ts.map +1 -1
  106. package/dist/upload-variables/index.js +1 -0
  107. package/dist/upload-variables/index.js.map +1 -1
  108. package/dist/upload-variables/upload-system-content-variables.d.ts +34 -0
  109. package/dist/upload-variables/upload-system-content-variables.d.ts.map +1 -0
  110. package/dist/upload-variables/upload-system-content-variables.js +14 -0
  111. package/dist/upload-variables/upload-system-content-variables.js.map +1 -0
  112. package/dist/utils/display-name-reservation.d.ts +8 -0
  113. package/dist/utils/display-name-reservation.d.ts.map +1 -0
  114. package/dist/utils/display-name-reservation.js +11 -0
  115. package/dist/utils/display-name-reservation.js.map +1 -0
  116. package/dist/utils/index.d.ts +1 -0
  117. package/dist/utils/index.d.ts.map +1 -1
  118. package/dist/utils/index.js +1 -0
  119. package/dist/utils/index.js.map +1 -1
  120. package/dist/utils/pledge-totals.d.ts +16 -3
  121. package/dist/utils/pledge-totals.d.ts.map +1 -1
  122. package/dist/utils/pledge-totals.js +20 -3
  123. package/dist/utils/pledge-totals.js.map +1 -1
  124. package/package.json +2 -2
@@ -201,4 +201,6 @@ export declare const ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE: {
201
201
  * untrusted stored task as a string, so an unknown type answers `false` (fails closed).
202
202
  */
203
203
  export declare function isAdminTaskResolvedByCheckin(taskType: string): boolean;
204
+ /** The most accounts one `uidList` system slot can name. */
205
+ export declare const MAX_SYSTEM_UID_LIST = 25;
204
206
  //# sourceMappingURL=business-admin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"business-admin.d.ts","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"business-admin.d.ts","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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"}
@@ -233,4 +233,6 @@ export function isAdminTaskResolvedByCheckin(taskType) {
233
233
  return (Object.hasOwn(ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE, taskType) &&
234
234
  ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE[taskType] === 'checkin');
235
235
  }
236
+ /** The most accounts one `uidList` system slot can name. */
237
+ export const MAX_SYSTEM_UID_LIST = 25;
236
238
  //# sourceMappingURL=business-admin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"business-admin.js","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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","sourcesContent":["// Admin + content-moderation business-rule constants — task priority, dispatches,\n// the moderation/feedback workflow, and admin-task lifecycle.\nimport { ACTIVE_LIMITS } from './app-mode.js';\nimport { MAX_WORK_PROJECT_TITLE_LENGTH } from './business-work-project.js';\nimport type { AdminTaskType } from '../doc-schemas/report-docs.js';\n\n// --- Admin Task Priority System ---\n\nexport const TASK_PRIORITY = {\n CRITICAL: 4,\n HIGH: 3,\n NORMAL: 2,\n LOW: 1,\n} as const;\n\nexport type TaskPriorityLevel = (typeof TASK_PRIORITY)[keyof typeof TASK_PRIORITY];\n\nexport const TASK_PRIORITY_LABELS = {\n 4: 'CRITICAL',\n 3: 'HIGH',\n 2: 'NORMAL',\n 1: 'LOW',\n} as const;\n\n/**\n * Canonical NUMERIC priority scale for `adminTasks.priority`, shared by BOTH\n * priority systems so `checkoutNextImportantTask` (orderBy priority desc across all\n * task types) compares commensurable values. The userReport report-core score formula\n * already writes on this scale (≈40–2250); the level-based types (thresholdLibraryReview,\n * content-appeal, adminDispatch) map their TASK_PRIORITY level onto these numbers instead\n * of writing the raw 1–4.\n *\n * Resulting order: safety reports (1200–2250) > money anomalies (1100) >\n * CRITICAL (1000) > HIGH (800) > routine reports interleave below > spam-tier (~80).\n */\nexport const TASK_PRIORITY_SCORE = {\n LOW: 50,\n NORMAL: 200,\n HIGH: 800,\n CRITICAL: 1000,\n /** Money-integrity anomaly (stake-share / pledge-ledger corruption signal) — outranks\n * everything except safety-class reports. The three anomaly creators that previously\n * hardcoded `priority: 1` (LOW) all write this. */\n MONEY_ANOMALY: 1100,\n} as const;\n\nexport type TaskPriorityScore = (typeof TASK_PRIORITY_SCORE)[keyof typeof TASK_PRIORITY_SCORE];\n\n/** Maps a level-based TASK_PRIORITY value (1–4) to its canonical numeric score. */\nexport const TASK_PRIORITY_LEVEL_TO_SCORE = {\n [TASK_PRIORITY.LOW]: TASK_PRIORITY_SCORE.LOW,\n [TASK_PRIORITY.NORMAL]: TASK_PRIORITY_SCORE.NORMAL,\n [TASK_PRIORITY.HIGH]: TASK_PRIORITY_SCORE.HIGH,\n [TASK_PRIORITY.CRITICAL]: TASK_PRIORITY_SCORE.CRITICAL,\n} as const;\n\n// --- Admin Dispatches ---\n\n/** Maximum length for an admin-dispatch subject line. */\nexport const MAX_ADMIN_DISPATCH_SUBJECT_LENGTH = 100;\n\n/** Maximum length for the initial body text of an admin dispatch. */\nexport const MAX_ADMIN_DISPATCH_INITIAL_TEXT_LENGTH = 1000;\n\n// --- Content Moderation Workflow ---\n\n/** Maximum length for a content-violation appeal message. */\nexport const MAX_APPEAL_MESSAGE_LENGTH = 1000;\n\n/** Threshold-review reviewer notes (revision notes shown to the author). One owner for\n * the review callable schema AND the admin work-view input. */\nexport const MAX_THRESHOLD_REVIEW_NOTES_LENGTH = 2000;\n\n/** Operator-facing reason stamped on a threshold item whose publish parked terminally\n * (`publishParkedReason`). Server-authored text, bounded so a long copy-failure message\n * cannot grow the doc without limit. */\nexport const MAX_THRESHOLD_PUBLISH_PARKED_REASON_LENGTH = 2000;\n\n// --- Moderation / safety operator text caps ---\n// Each is declared ONCE here and derived by every input schema AND persisted doc schema\n// that carries the field — the numbers must never be re-hardcoded at an enforcement point.\n\n/** Operator-facing INTERNAL reason/rationale (LE-loggable; account actions, case reopens). */\nexport const MAX_INTERNAL_REASON_LENGTH = 2000;\n\n/** The optional reason an admin records when closing an account discovered to be under 13. */\nexport const MAX_UNDER_13_CLOSE_REASON_LENGTH = 1000;\n\n/** The generic owner-readable (user-facing) reason — deliberately short, no detail leaks. */\nexport const MAX_USER_FACING_REASON_LENGTH = 280;\n\n/** Structured close-out summary on report/safety-case resolutions. */\nexport const MAX_SAFETY_RESOLUTION_SUMMARY_LENGTH = 2000;\n\n/** Optional operator note attached to a close-out. */\nexport const MAX_SAFETY_ADMIN_NOTE_LENGTH = 4000;\n\n// --- Report intake text caps ---\n\n/** Reporter free-text narrative/comment (segregated private doc; never on the root). */\nexport const MAX_REPORT_NARRATIVE_LENGTH = 4000;\n\n/** The ids a client names as the target of a report — the item, its parent reference, and the\n * owner hint. They are hints the server re-derives, so the cap only bounds what is read. */\nexport const MAX_REPORT_TARGET_ID_LENGTH = 256;\n\n/** The report DIALOG's comment field cap (the client-side compose bound — tighter than\n * the server narrative cap above, which also absorbs upgrade concatenations). */\nexport const MAX_REPORT_COMMENT_LENGTH = 1000;\n\n/** Minimum operator rationale/reason length on safety-console staged actions. */\nexport const MIN_SAFETY_RATIONALE_LENGTH = 10;\n\n/** Operator reason on an admin chat-moderation action (adminModerateChatMessage /\n * adminReadChannelContext). ONE owner for both callables' `reason` bound. */\nexport const MAX_CHAT_MODERATION_REASON_LENGTH = 1000;\n\n/** Broadcast explicitUids selector audience cap (schema + composer both derive). */\nexport const MAX_BROADCAST_EXPLICIT_UIDS = 2000;\n\n// --- Operator step-up sentinel error codes ---\n// The two backend HttpsError messages the operator TOTP step-up throws; the frontend\n// matches them to open the step-up dialog in ENROLL vs VERIFY mode. ONE declaration —\n// both the callable (functions operatorStepUp.ts) and the frontend hook import these.\nexport const STEP_UP_ENROLL_REQUIRED = 'OPERATOR_STEP_UP_ENROLL_REQUIRED';\nexport const STEP_UP_REQUIRED = 'OPERATOR_STEP_UP_REQUIRED';\n\n/** How many digits an operator step-up authenticator code has. */\nexport const OPERATOR_STEP_UP_CODE_LENGTH = 6;\n\n/** The frozen report-time captured text snapshot (edit-to-evade guard; NO PII). */\nexport const MAX_REPORT_SNAPSHOT_TEXT_LENGTH = 4000;\n\n// --- Admin console config-content text caps ---\n// Every number the system uses lives HERE — even a field only one surface consumes\n// today, because any future client (TV / phone / admin app) reads ttt-core.\n\nexport const MAX_FUTURE_PLAN_TITLE_LENGTH = 200;\nexport const MAX_FUTURE_PLAN_DESCRIPTION_LENGTH = 4000;\nexport const MAX_PLATFORM_RULE_TITLE_LENGTH = 200;\nexport const MAX_PLATFORM_RULE_DESCRIPTION_LENGTH = 4000;\nexport const MAX_AGREEMENT_POINT_LENGTH = 2000;\nexport const MAX_CONTENT_PAGE_HEADING_LENGTH = 300;\nexport const MAX_CONTENT_PAGE_BODY_LENGTH = 20000;\n/** Sections in one long-form content page (Terms, Privacy, the DMCA policy's process text). */\nexport const MAX_CONTENT_PAGE_SECTIONS = 300;\nexport const MAX_TAKE_IT_DOWN_COPY_LENGTH = 8000;\n/** DMCA policy page: the labeled contact blocks (service provider, designated agent) and their rows. */\nexport const MAX_DMCA_CONTACT_BLOCKS = 10;\nexport const MAX_DMCA_CONTACT_ROWS = 20;\nexport const MAX_DMCA_CONTACT_LABEL_LENGTH = 100;\nexport const MAX_DMCA_CONTACT_VALUE_LENGTH = 500;\nexport const MAX_MAINTENANCE_MESSAGE_LENGTH = 2000;\n\n/** `_appConfig/app.appVersion` — the force-refresh version string VersionGate compares. */\nexport const MAX_APP_VERSION_LENGTH = 64;\n\n/** Announcement-banner copy on `_appConfig/app.announcementMessage`. Deliberately far\n * shorter than the maintenance message: the announcement renders as a one-line banner\n * on the landing page and login screen, not a full-page takeover. */\nexport const MAX_ANNOUNCEMENT_MESSAGE_LENGTH = 300;\n\n/** Admin notes on a content-appeal review (reviewContentAppeal). */\nexport const MAX_APPEAL_REVIEW_NOTES_LENGTH = 2000;\n\n/** Admin reason on a Work/Realm forced-retitle remedy. */\nexport const MAX_REQUIRE_RETITLE_REASON_LENGTH = 500;\n\n/** Optional user-facing DETAIL text on a normal-report resolution. */\nexport const MAX_USER_FACING_REASON_DETAIL_LENGTH = 2000;\n\n/** Admin broadcast / user notification message body. */\nexport const MAX_NOTIFICATION_MESSAGE_LENGTH = 2000;\n\n/** Admin broadcast title — the same length as a Work title. */\nexport const MAX_BROADCAST_TITLE_LENGTH = MAX_WORK_PROJECT_TITLE_LENGTH;\n\n/** Admin user-search query input. */\nexport const MAX_USER_SEARCH_QUERY_LENGTH = 100;\n\n// --- NCII / child-safety statutory + operator text caps ---\n\n/** Operator written rationale on a TAKE IT DOWN validity decision (immutable row). */\nexport const MAX_NCII_RATIONALE_LENGTH = 4000;\n\n/** Requester's statement of nonconsent (statutory intake — in-app and no-login). */\nexport const MAX_NCII_NONCONSENT_STATEMENT_LENGTH = 4000;\n\n/** Typed-name electronic signature on a statutory request. */\nexport const MAX_NCII_SIGNED_NAME_LENGTH = 256;\n\n/** Requester's optional supporting facts (statutory intake). */\nexport const MAX_NCII_SUPPORTING_FACTS_LENGTH = 8000;\n\n/** Bounded, non-sensitive summary on an NCII request action row. */\nexport const MAX_NCII_ACTION_SUMMARY_LENGTH = 280;\n\n/** Operator description of a registered evidence artifact (e.g. portal screenshot). */\nexport const MAX_SAFETY_ARTIFACT_DESCRIPTION_LENGTH = 500;\n\n/** Operator proof note on a manual NCMEC portal filing. */\nexport const MAX_NCMEC_PORTAL_PROOF_TEXT_LENGTH = 2000;\n\n/** Requester's typed name on the no-login TAKE IT DOWN statutory intake. */\nexport const MAX_NCII_REQUESTER_NAME_LENGTH = 256;\n\n/** Name of the depicted person a representative files on behalf of. */\nexport const MAX_NCII_REPRESENTED_PERSON_NAME_LENGTH = 256;\n\n/** Representative's stated basis of authority (parent/guardian/counsel etc.). */\nexport const MAX_NCII_AUTHORITY_BASIS_LENGTH = 2000;\n\n/** Optional pointer/reference to authority evidence supplied by a representative. */\nexport const MAX_NCII_AUTHORITY_EVIDENCE_REF_LENGTH = 512;\n\n/** The external URL a no-login statutory request names as the content to remove. */\nexport const MAX_NCII_LOCATOR_URL_LENGTH = 2048;\n\n/** The client-generated idempotency key of a statutory request: a retried submit carries the same\n * key, and the server derives the request id from it. */\nexport const NCII_IDEMPOTENCY_KEY_MIN_LENGTH = 8;\nexport const NCII_IDEMPOTENCY_KEY_MAX_LENGTH = 256;\n\n/** A statutory requester's contact email (the address-length ceiling of an email). */\nexport const MAX_NCII_CONTACT_EMAIL_LENGTH = 320;\n\n/** A statutory requester's contact phone number. */\nexport const NCII_CONTACT_PHONE_MIN_LENGTH = 3;\nexport const NCII_CONTACT_PHONE_MAX_LENGTH = 64;\n\n/** Maximum length for a feedback suggestion. */\nexport const MAX_FEEDBACK_SUGGESTION_LENGTH = 100;\n\n/** Maximum number of distinct submitters tracked per feedback suggestion. Mode-varied. */\nexport const MAX_FEEDBACK_SUBMITTERS = ACTIVE_LIMITS.batches.maxFeedbackSubmitters;\n\n/**\n * Canonical list of feedback types accepted by `submitFeedback`. Used both\n * for runtime validation in the schema (`SubmitFeedbackInputSchema`) and\n * for type-safe consumer props on the frontend `<FeedbackSubmission />`\n * component. Adding a new type here is the single source of truth — no\n * mirroring in callers required.\n */\nexport const FEEDBACK_TYPES = [\n 'tradeProfessionSuggestions',\n 'craftSkillTagSuggestions',\n 'talesWorkGenreSuggestions',\n 'tunesWorkGenreSuggestions',\n 'televisionWorkGenreSuggestions',\n] as const;\n\n/** Union of canonical feedback types. */\nexport type FeedbackType = (typeof FEEDBACK_TYPES)[number];\n\n/** Maximum number of items submitted in a single hallLibrary-review submission. Mode-varied. */\nexport const MAX_HALL_LIBRARY_SUBMIT_BATCH = ACTIVE_LIMITS.hall.maxSubmitBatch;\n\n// --- Admin Tasks ---\n\n/** Admin task lifecycle statuses. */\nexport const ADMIN_TASK_STATUS = {\n PENDING: 'pending',\n CHECKED_OUT: 'checkedOut',\n WORK_LATER: 'workLater',\n COMPLETED: 'completed',\n} as const;\n\n/**\n * Who resolves each kind of admin task. `checkin` means the generic queue check-in completes it\n * (the task carries no decision of its own). Every other owner is the domain decision that closes\n * the task — and deletes it in the same transaction — so a generic check-in must never mark one\n * of those tasks resolved: that would drop the decision it exists to collect.\n */\nexport const ADMIN_TASK_RESOLUTION_OWNERS = [\n 'checkin',\n 'reportResolution',\n 'thresholdReview',\n 'appealReview',\n 'refundDecision',\n 'changeRequestReview',\n 'dispatchClose',\n] as const;\nexport type AdminTaskResolutionOwner = (typeof ADMIN_TASK_RESOLUTION_OWNERS)[number];\n\n/** The resolution owner of every admin task type. A new task type fails the build until classified. */\nexport const ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE = {\n adminDispatch: 'dispatchClose',\n thresholdLibraryReview: 'thresholdReview',\n userReport: 'reportResolution',\n 'content-appeal': 'appealReview',\n stakeShareAnomaly: 'checkin',\n pledgeLedgerAnomaly: 'checkin',\n pledgePaymentRepairNeeded: 'checkin',\n pledgeDisputeOpened: 'checkin',\n pledgeRefundRequested: 'refundDecision',\n pledgeRefundFailed: 'refundDecision',\n hallContentChangeRequest: 'changeRequestReview',\n} as const satisfies Record<AdminTaskType, AdminTaskResolutionOwner>;\n\n/**\n * Whether a generic check-in may mark a task of this stored type resolved. The type is read off an\n * untrusted stored task as a string, so an unknown type answers `false` (fails closed).\n */\nexport function isAdminTaskResolvedByCheckin(taskType: string): boolean {\n return (\n Object.hasOwn(ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE, taskType) &&\n ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE[taskType as AdminTaskType] === 'checkin'\n );\n}\n"]}
1
+ {"version":3,"file":"business-admin.js","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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","sourcesContent":["// Admin + content-moderation business-rule constants — task priority, dispatches,\n// the moderation/feedback workflow, and admin-task lifecycle.\nimport { ACTIVE_LIMITS } from './app-mode.js';\nimport { MAX_WORK_PROJECT_TITLE_LENGTH } from './business-work-project.js';\nimport type { AdminTaskType } from '../doc-schemas/report-docs.js';\n\n// --- Admin Task Priority System ---\n\nexport const TASK_PRIORITY = {\n CRITICAL: 4,\n HIGH: 3,\n NORMAL: 2,\n LOW: 1,\n} as const;\n\nexport type TaskPriorityLevel = (typeof TASK_PRIORITY)[keyof typeof TASK_PRIORITY];\n\nexport const TASK_PRIORITY_LABELS = {\n 4: 'CRITICAL',\n 3: 'HIGH',\n 2: 'NORMAL',\n 1: 'LOW',\n} as const;\n\n/**\n * Canonical NUMERIC priority scale for `adminTasks.priority`, shared by BOTH\n * priority systems so `checkoutNextImportantTask` (orderBy priority desc across all\n * task types) compares commensurable values. The userReport report-core score formula\n * already writes on this scale (≈40–2250); the level-based types (thresholdLibraryReview,\n * content-appeal, adminDispatch) map their TASK_PRIORITY level onto these numbers instead\n * of writing the raw 1–4.\n *\n * Resulting order: safety reports (1200–2250) > money anomalies (1100) >\n * CRITICAL (1000) > HIGH (800) > routine reports interleave below > spam-tier (~80).\n */\nexport const TASK_PRIORITY_SCORE = {\n LOW: 50,\n NORMAL: 200,\n HIGH: 800,\n CRITICAL: 1000,\n /** Money-integrity anomaly (stake-share / pledge-ledger corruption signal) — outranks\n * everything except safety-class reports. The three anomaly creators that previously\n * hardcoded `priority: 1` (LOW) all write this. */\n MONEY_ANOMALY: 1100,\n} as const;\n\nexport type TaskPriorityScore = (typeof TASK_PRIORITY_SCORE)[keyof typeof TASK_PRIORITY_SCORE];\n\n/** Maps a level-based TASK_PRIORITY value (1–4) to its canonical numeric score. */\nexport const TASK_PRIORITY_LEVEL_TO_SCORE = {\n [TASK_PRIORITY.LOW]: TASK_PRIORITY_SCORE.LOW,\n [TASK_PRIORITY.NORMAL]: TASK_PRIORITY_SCORE.NORMAL,\n [TASK_PRIORITY.HIGH]: TASK_PRIORITY_SCORE.HIGH,\n [TASK_PRIORITY.CRITICAL]: TASK_PRIORITY_SCORE.CRITICAL,\n} as const;\n\n// --- Admin Dispatches ---\n\n/** Maximum length for an admin-dispatch subject line. */\nexport const MAX_ADMIN_DISPATCH_SUBJECT_LENGTH = 100;\n\n/** Maximum length for the initial body text of an admin dispatch. */\nexport const MAX_ADMIN_DISPATCH_INITIAL_TEXT_LENGTH = 1000;\n\n// --- Content Moderation Workflow ---\n\n/** Maximum length for a content-violation appeal message. */\nexport const MAX_APPEAL_MESSAGE_LENGTH = 1000;\n\n/** Threshold-review reviewer notes (revision notes shown to the author). One owner for\n * the review callable schema AND the admin work-view input. */\nexport const MAX_THRESHOLD_REVIEW_NOTES_LENGTH = 2000;\n\n/** Operator-facing reason stamped on a threshold item whose publish parked terminally\n * (`publishParkedReason`). Server-authored text, bounded so a long copy-failure message\n * cannot grow the doc without limit. */\nexport const MAX_THRESHOLD_PUBLISH_PARKED_REASON_LENGTH = 2000;\n\n// --- Moderation / safety operator text caps ---\n// Each is declared ONCE here and derived by every input schema AND persisted doc schema\n// that carries the field — the numbers must never be re-hardcoded at an enforcement point.\n\n/** Operator-facing INTERNAL reason/rationale (LE-loggable; account actions, case reopens). */\nexport const MAX_INTERNAL_REASON_LENGTH = 2000;\n\n/** The optional reason an admin records when closing an account discovered to be under 13. */\nexport const MAX_UNDER_13_CLOSE_REASON_LENGTH = 1000;\n\n/** The generic owner-readable (user-facing) reason — deliberately short, no detail leaks. */\nexport const MAX_USER_FACING_REASON_LENGTH = 280;\n\n/** Structured close-out summary on report/safety-case resolutions. */\nexport const MAX_SAFETY_RESOLUTION_SUMMARY_LENGTH = 2000;\n\n/** Optional operator note attached to a close-out. */\nexport const MAX_SAFETY_ADMIN_NOTE_LENGTH = 4000;\n\n// --- Report intake text caps ---\n\n/** Reporter free-text narrative/comment (segregated private doc; never on the root). */\nexport const MAX_REPORT_NARRATIVE_LENGTH = 4000;\n\n/** The ids a client names as the target of a report — the item, its parent reference, and the\n * owner hint. They are hints the server re-derives, so the cap only bounds what is read. */\nexport const MAX_REPORT_TARGET_ID_LENGTH = 256;\n\n/** The report DIALOG's comment field cap (the client-side compose bound — tighter than\n * the server narrative cap above, which also absorbs upgrade concatenations). */\nexport const MAX_REPORT_COMMENT_LENGTH = 1000;\n\n/** Minimum operator rationale/reason length on safety-console staged actions. */\nexport const MIN_SAFETY_RATIONALE_LENGTH = 10;\n\n/** Operator reason on an admin chat-moderation action (adminModerateChatMessage /\n * adminReadChannelContext). ONE owner for both callables' `reason` bound. */\nexport const MAX_CHAT_MODERATION_REASON_LENGTH = 1000;\n\n/** Broadcast explicitUids selector audience cap (schema + composer both derive). */\nexport const MAX_BROADCAST_EXPLICIT_UIDS = 2000;\n\n// --- Operator step-up sentinel error codes ---\n// The two backend HttpsError messages the operator TOTP step-up throws; the frontend\n// matches them to open the step-up dialog in ENROLL vs VERIFY mode. ONE declaration —\n// both the callable (functions operatorStepUp.ts) and the frontend hook import these.\nexport const STEP_UP_ENROLL_REQUIRED = 'OPERATOR_STEP_UP_ENROLL_REQUIRED';\nexport const STEP_UP_REQUIRED = 'OPERATOR_STEP_UP_REQUIRED';\n\n/** How many digits an operator step-up authenticator code has. */\nexport const OPERATOR_STEP_UP_CODE_LENGTH = 6;\n\n/** The frozen report-time captured text snapshot (edit-to-evade guard; NO PII). */\nexport const MAX_REPORT_SNAPSHOT_TEXT_LENGTH = 4000;\n\n// --- Admin console config-content text caps ---\n// Every number the system uses lives HERE — even a field only one surface consumes\n// today, because any future client (TV / phone / admin app) reads ttt-core.\n\nexport const MAX_FUTURE_PLAN_TITLE_LENGTH = 200;\nexport const MAX_FUTURE_PLAN_DESCRIPTION_LENGTH = 4000;\nexport const MAX_PLATFORM_RULE_TITLE_LENGTH = 200;\nexport const MAX_PLATFORM_RULE_DESCRIPTION_LENGTH = 4000;\nexport const MAX_AGREEMENT_POINT_LENGTH = 2000;\nexport const MAX_CONTENT_PAGE_HEADING_LENGTH = 300;\nexport const MAX_CONTENT_PAGE_BODY_LENGTH = 20000;\n/** Sections in one long-form content page (Terms, Privacy, the DMCA policy's process text). */\nexport const MAX_CONTENT_PAGE_SECTIONS = 300;\nexport const MAX_TAKE_IT_DOWN_COPY_LENGTH = 8000;\n/** DMCA policy page: the labeled contact blocks (service provider, designated agent) and their rows. */\nexport const MAX_DMCA_CONTACT_BLOCKS = 10;\nexport const MAX_DMCA_CONTACT_ROWS = 20;\nexport const MAX_DMCA_CONTACT_LABEL_LENGTH = 100;\nexport const MAX_DMCA_CONTACT_VALUE_LENGTH = 500;\nexport const MAX_MAINTENANCE_MESSAGE_LENGTH = 2000;\n\n/** `_appConfig/app.appVersion` — the force-refresh version string VersionGate compares. */\nexport const MAX_APP_VERSION_LENGTH = 64;\n\n/** Announcement-banner copy on `_appConfig/app.announcementMessage`. Deliberately far\n * shorter than the maintenance message: the announcement renders as a one-line banner\n * on the landing page and login screen, not a full-page takeover. */\nexport const MAX_ANNOUNCEMENT_MESSAGE_LENGTH = 300;\n\n/** Admin notes on a content-appeal review (reviewContentAppeal). */\nexport const MAX_APPEAL_REVIEW_NOTES_LENGTH = 2000;\n\n/** Admin reason on a Work/Realm forced-retitle remedy. */\nexport const MAX_REQUIRE_RETITLE_REASON_LENGTH = 500;\n\n/** Optional user-facing DETAIL text on a normal-report resolution. */\nexport const MAX_USER_FACING_REASON_DETAIL_LENGTH = 2000;\n\n/** Admin broadcast / user notification message body. */\nexport const MAX_NOTIFICATION_MESSAGE_LENGTH = 2000;\n\n/** Admin broadcast title — the same length as a Work title. */\nexport const MAX_BROADCAST_TITLE_LENGTH = MAX_WORK_PROJECT_TITLE_LENGTH;\n\n/** Admin user-search query input. */\nexport const MAX_USER_SEARCH_QUERY_LENGTH = 100;\n\n// --- NCII / child-safety statutory + operator text caps ---\n\n/** Operator written rationale on a TAKE IT DOWN validity decision (immutable row). */\nexport const MAX_NCII_RATIONALE_LENGTH = 4000;\n\n/** Requester's statement of nonconsent (statutory intake — in-app and no-login). */\nexport const MAX_NCII_NONCONSENT_STATEMENT_LENGTH = 4000;\n\n/** Typed-name electronic signature on a statutory request. */\nexport const MAX_NCII_SIGNED_NAME_LENGTH = 256;\n\n/** Requester's optional supporting facts (statutory intake). */\nexport const MAX_NCII_SUPPORTING_FACTS_LENGTH = 8000;\n\n/** Bounded, non-sensitive summary on an NCII request action row. */\nexport const MAX_NCII_ACTION_SUMMARY_LENGTH = 280;\n\n/** Operator description of a registered evidence artifact (e.g. portal screenshot). */\nexport const MAX_SAFETY_ARTIFACT_DESCRIPTION_LENGTH = 500;\n\n/** Operator proof note on a manual NCMEC portal filing. */\nexport const MAX_NCMEC_PORTAL_PROOF_TEXT_LENGTH = 2000;\n\n/** Requester's typed name on the no-login TAKE IT DOWN statutory intake. */\nexport const MAX_NCII_REQUESTER_NAME_LENGTH = 256;\n\n/** Name of the depicted person a representative files on behalf of. */\nexport const MAX_NCII_REPRESENTED_PERSON_NAME_LENGTH = 256;\n\n/** Representative's stated basis of authority (parent/guardian/counsel etc.). */\nexport const MAX_NCII_AUTHORITY_BASIS_LENGTH = 2000;\n\n/** Optional pointer/reference to authority evidence supplied by a representative. */\nexport const MAX_NCII_AUTHORITY_EVIDENCE_REF_LENGTH = 512;\n\n/** The external URL a no-login statutory request names as the content to remove. */\nexport const MAX_NCII_LOCATOR_URL_LENGTH = 2048;\n\n/** The client-generated idempotency key of a statutory request: a retried submit carries the same\n * key, and the server derives the request id from it. */\nexport const NCII_IDEMPOTENCY_KEY_MIN_LENGTH = 8;\nexport const NCII_IDEMPOTENCY_KEY_MAX_LENGTH = 256;\n\n/** A statutory requester's contact email (the address-length ceiling of an email). */\nexport const MAX_NCII_CONTACT_EMAIL_LENGTH = 320;\n\n/** A statutory requester's contact phone number. */\nexport const NCII_CONTACT_PHONE_MIN_LENGTH = 3;\nexport const NCII_CONTACT_PHONE_MAX_LENGTH = 64;\n\n/** Maximum length for a feedback suggestion. */\nexport const MAX_FEEDBACK_SUGGESTION_LENGTH = 100;\n\n/** Maximum number of distinct submitters tracked per feedback suggestion. Mode-varied. */\nexport const MAX_FEEDBACK_SUBMITTERS = ACTIVE_LIMITS.batches.maxFeedbackSubmitters;\n\n/**\n * Canonical list of feedback types accepted by `submitFeedback`. Used both\n * for runtime validation in the schema (`SubmitFeedbackInputSchema`) and\n * for type-safe consumer props on the frontend `<FeedbackSubmission />`\n * component. Adding a new type here is the single source of truth — no\n * mirroring in callers required.\n */\nexport const FEEDBACK_TYPES = [\n 'tradeProfessionSuggestions',\n 'craftSkillTagSuggestions',\n 'talesWorkGenreSuggestions',\n 'tunesWorkGenreSuggestions',\n 'televisionWorkGenreSuggestions',\n] as const;\n\n/** Union of canonical feedback types. */\nexport type FeedbackType = (typeof FEEDBACK_TYPES)[number];\n\n/** Maximum number of items submitted in a single hallLibrary-review submission. Mode-varied. */\nexport const MAX_HALL_LIBRARY_SUBMIT_BATCH = ACTIVE_LIMITS.hall.maxSubmitBatch;\n\n// --- Admin Tasks ---\n\n/** Admin task lifecycle statuses. */\nexport const ADMIN_TASK_STATUS = {\n PENDING: 'pending',\n CHECKED_OUT: 'checkedOut',\n WORK_LATER: 'workLater',\n COMPLETED: 'completed',\n} as const;\n\n/**\n * Who resolves each kind of admin task. `checkin` means the generic queue check-in completes it\n * (the task carries no decision of its own). Every other owner is the domain decision that closes\n * the task — and deletes it in the same transaction — so a generic check-in must never mark one\n * of those tasks resolved: that would drop the decision it exists to collect.\n */\nexport const ADMIN_TASK_RESOLUTION_OWNERS = [\n 'checkin',\n 'reportResolution',\n 'thresholdReview',\n 'appealReview',\n 'refundDecision',\n 'changeRequestReview',\n 'dispatchClose',\n] as const;\nexport type AdminTaskResolutionOwner = (typeof ADMIN_TASK_RESOLUTION_OWNERS)[number];\n\n/** The resolution owner of every admin task type. A new task type fails the build until classified. */\nexport const ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE = {\n adminDispatch: 'dispatchClose',\n thresholdLibraryReview: 'thresholdReview',\n userReport: 'reportResolution',\n 'content-appeal': 'appealReview',\n stakeShareAnomaly: 'checkin',\n pledgeLedgerAnomaly: 'checkin',\n pledgePaymentRepairNeeded: 'checkin',\n pledgeDisputeOpened: 'checkin',\n pledgeRefundRequested: 'refundDecision',\n pledgeRefundFailed: 'refundDecision',\n hallContentChangeRequest: 'changeRequestReview',\n} as const satisfies Record<AdminTaskType, AdminTaskResolutionOwner>;\n\n/**\n * Whether a generic check-in may mark a task of this stored type resolved. The type is read off an\n * untrusted stored task as a string, so an unknown type answers `false` (fails closed).\n */\nexport function isAdminTaskResolvedByCheckin(taskType: string): boolean {\n return (\n Object.hasOwn(ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE, taskType) &&\n ADMIN_TASK_RESOLUTION_OWNER_BY_TYPE[taskType as AdminTaskType] === 'checkin'\n );\n}\n\n/** The most accounts one `uidList` system slot can name. */\nexport const MAX_SYSTEM_UID_LIST = 25;\n"]}
@@ -4,8 +4,8 @@ export declare const CommissionAttachmentSchema: z.ZodObject<{
4
4
  name: z.ZodString;
5
5
  mediaAssetId: z.ZodString;
6
6
  type: z.ZodEnum<{
7
- image: "image";
8
7
  video: "video";
8
+ image: "image";
9
9
  audio: "audio";
10
10
  }>;
11
11
  size: z.ZodNumber;
@@ -20,8 +20,8 @@ export declare const FullCommissionListingSchema: z.ZodObject<{
20
20
  name: z.ZodString;
21
21
  mediaAssetId: z.ZodString;
22
22
  type: z.ZodEnum<{
23
- image: "image";
24
23
  video: "video";
24
+ image: "image";
25
25
  audio: "audio";
26
26
  }>;
27
27
  size: z.ZodNumber;
@@ -58,8 +58,8 @@ export declare const CommissionProposalSchema: z.ZodObject<{
58
58
  proposalText: z.ZodString;
59
59
  proposalFileAssetId: z.ZodOptional<z.ZodString>;
60
60
  proposalFileType: z.ZodOptional<z.ZodEnum<{
61
- image: "image";
62
61
  video: "video";
62
+ image: "image";
63
63
  audio: "audio";
64
64
  }>>;
65
65
  createdBy: z.ZodObject<{
@@ -94,8 +94,8 @@ export declare const CreateCommissionProposalTextResultSchema: z.ZodObject<{
94
94
  proposalText: z.ZodString;
95
95
  proposalFileAssetId: z.ZodOptional<z.ZodString>;
96
96
  proposalFileType: z.ZodOptional<z.ZodEnum<{
97
- image: "image";
98
97
  video: "video";
98
+ image: "image";
99
99
  audio: "audio";
100
100
  }>>;
101
101
  createdBy: z.ZodObject<{
@@ -388,8 +388,8 @@ export declare const FuturePlanItemSchema: z.ZodObject<{
388
388
  order: z.ZodNumber;
389
389
  videoUrl: z.ZodOptional<z.ZodString>;
390
390
  mediaType: z.ZodOptional<z.ZodEnum<{
391
- image: "image";
392
391
  video: "video";
392
+ image: "image";
393
393
  audio: "audio";
394
394
  other: "other";
395
395
  }>>;
@@ -404,8 +404,8 @@ export declare const FuturePlansDocumentSchema: z.ZodObject<{
404
404
  order: z.ZodNumber;
405
405
  videoUrl: z.ZodOptional<z.ZodString>;
406
406
  mediaType: z.ZodOptional<z.ZodEnum<{
407
- image: "image";
408
407
  video: "video";
408
+ image: "image";
409
409
  audio: "audio";
410
410
  other: "other";
411
411
  }>>;
@@ -179,6 +179,7 @@ export declare const ERASURE_FATES_BY_COLLECTION_PATH: {
179
179
  readonly '_appConfig/privacyPolicy': readonly ["none"];
180
180
  readonly '_appConfig/takeItDownPageCopy': readonly ["none"];
181
181
  readonly '_appConfig/dmcaPolicy': readonly ["none"];
182
+ readonly '_appConfig/systemUidSlots': readonly ["retain"];
182
183
  readonly '_serverData/agePolicy': readonly ["none"];
183
184
  readonly '_serverData/nciiPolicy': readonly ["retain"];
184
185
  readonly '_serverData/privilegedReviewerSecurity': readonly ["none"];
@@ -188,6 +189,7 @@ export declare const ERASURE_FATES_BY_COLLECTION_PATH: {
188
189
  readonly '_systemData/reservedUsernames': readonly ["none"];
189
190
  readonly '_systemData/blockedFranchiseNames': readonly ["none"];
190
191
  readonly '_systemData/appMode': readonly ["none"];
192
+ readonly '_systemData/systemVideoSlots': readonly ["none"];
191
193
  };
192
194
  /** Every registered path whose declared fates include `fate`. */
193
195
  export declare function collectionPathsWithErasureFate(fate: ErasureFate): RegisteredCollectionPath[];
@@ -1 +1 @@
1
- {"version":3,"file":"erasure-fates.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,eAAO,MAAM,iBAAiB;;;;;EAAwB,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAW5D,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2PkC,CAAC;AAEhF,iEAAiE;AACjE,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,WAAW,GAAG,wBAAwB,EAAE,CAI5F;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,EACnE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAAC,CAI9C"}
1
+ {"version":3,"file":"erasure-fates.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,eAAO,MAAM,iBAAiB;;;;;EAAwB,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAW5D,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8PkC,CAAC;AAEhF,iEAAiE;AACjE,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,WAAW,GAAG,wBAAwB,EAAE,CAI5F;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,EACnE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAAC,CAI9C"}
@@ -254,6 +254,8 @@ export const ERASURE_FATES_BY_COLLECTION_PATH = {
254
254
  '_appConfig/privacyPolicy': NONE,
255
255
  '_appConfig/takeItDownPageCopy': NONE,
256
256
  '_appConfig/dmcaPolicy': NONE,
257
+ // A slot naming the erased member keeps the uid, which renders as Former Member.
258
+ '_appConfig/systemUidSlots': RETAIN,
257
259
  '_serverData/agePolicy': NONE,
258
260
  '_serverData/nciiPolicy': RETAIN,
259
261
  '_serverData/privilegedReviewerSecurity': NONE,
@@ -264,6 +266,7 @@ export const ERASURE_FATES_BY_COLLECTION_PATH = {
264
266
  '_systemData/reservedUsernames': NONE,
265
267
  '_systemData/blockedFranchiseNames': NONE,
266
268
  '_systemData/appMode': NONE,
269
+ '_systemData/systemVideoSlots': NONE,
267
270
  };
268
271
  /** Every registered path whose declared fates include `fate`. */
269
272
  export function collectionPathsWithErasureFate(fate) {
@@ -1 +1 @@
1
- {"version":3,"file":"erasure-fates.js","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"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","sourcesContent":["// The account-erasure fate of every registered Firestore path — what erasing one member does to\n// the documents there that belong to or name them. TOTAL over COLLECTION_SCHEMAS, so a new\n// collection cannot be registered without declaring its fate; the erasure scrub and the published\n// deletion policy both follow it.\n//\n// A path listing two fates splits by the per-document rule written at its entry. Every\n// destructive fate is subject to the scrub's hold carve-out: a document under a safety hold is left\n// untouched and the erasure stays incomplete until the hold is released.\n\nimport { z } from 'zod';\nimport type { AdminDispatch } from './messaging.js';\nimport type { RegisteredCollectionPath } from './registry.js';\n\n/**\n * - `delete` — the member's documents there are deleted; a media asset is retired (its bytes\n * removed, its doc tombstoned).\n * - `anonymize` — kept, with the member's identity rewritten in place (the Former Member identity,\n * the chat tombstone, `reporterUid: 'erased'`, blanked personal fields).\n * - `retain` — kept unchanged; a uid it holds renders as Former Member through the anonymized\n * public mirror.\n * - `none` — no document there belongs to or names a member.\n */\nexport const ERASURE_FATES = ['delete', 'anonymize', 'retain', 'none'] as const;\nexport const ErasureFateSchema = z.enum(ERASURE_FATES);\nexport type ErasureFate = z.infer<typeof ErasureFateSchema>;\n\ntype ErasureFates = readonly [ErasureFate, ...ErasureFate[]];\n\nconst DELETE = ['delete'] as const;\nconst ANONYMIZE = ['anonymize'] as const;\nconst RETAIN = ['retain'] as const;\nconst NONE = ['none'] as const;\n/** A Work-owned path: deleted with a solo unpublished draft Work, retained on any other Work. */\nconst SOLO_DRAFT_WORK = ['delete', 'retain'] as const;\n\nexport const ERASURE_FATES_BY_COLLECTION_PATH = {\n // ===== The member's own account =====\n 'userProfiles/{userId}': ANONYMIZE,\n 'userProfiles/{userId}/privateData/{userId}': DELETE,\n // Viewing history, resume points, and watchlist.\n 'userProfiles/{userId}/privateData/hallLibraryPreferences': DELETE,\n 'userProfiles/{userId}/profileCraftSkills/{craftSkillId}': DELETE,\n 'userProfiles/{userId}/auditionVotes/{auditionId}': DELETE,\n 'userProfiles/{userId}/mentionHistory/{docId}': DELETE,\n 'userProfiles/{userId}/notificationHistory/{notificationId}': DELETE,\n // The member's like history; the like counts on posts stay.\n 'userProfiles/{userId}/userLikes/likeHistory/squareStreetzLikes/{postId}': DELETE,\n 'publicUsers/{uid}': ANONYMIZE,\n 'reservedDisplayNames/{displayNameUppercase}': DELETE,\n // The compliance record of the erasure itself: kept permanently, account id only.\n 'accountDeletionRequests/{uid}': RETAIN,\n // No scrub step: the account-status drain deletes the entry on its next run, once the Auth user is gone.\n 'statusReconcileQueue/{uid}': DELETE,\n 'ageAttestationNonces/{nonceHash}': RETAIN,\n\n // ===== Work / Realm / Guild =====\n 'allWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n // Otherwise the membership is kept as `departed`.\n 'allWorkProjects/{workProjectId}/guildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/publicGuildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}/workFiles/{workFileId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/hallSubmissionReservation/reservation': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}/taleChapters/{chapterId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}/tuneTracks/{trackId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}/televisionEpisodes/{episodeId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/guildChatChannels/{guildChatChannelId}': SOLO_DRAFT_WORK,\n 'publicWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n // Deleted with a draft Realm the solo draft founded and no other Work joined.\n 'workRealms/{workRealmId}': SOLO_DRAFT_WORK,\n 'reservedRealmNames/{workingTitleUppercase}': SOLO_DRAFT_WORK,\n 'workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}': RETAIN,\n // The two parties' invite, and how a guildmate joined with stake: an open invite is closed\n // (cancelled or declined) and every invite is kept, the member shown as Former Member.\n 'guildInviteConversations/{guildInviteId}': RETAIN,\n // A file the member uploaded is deleted, its bytes retired first (only its uploader controls it);\n // a file the other party uploaded is theirs and stays.\n 'guildInviteConversations/{guildInviteId}/conversationFiles/{conversationFileId}': ['delete', 'retain'],\n 'thresholdItems/{thresholdItemId}': SOLO_DRAFT_WORK,\n 'hallItems/{hallItemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTales/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTunes/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTelevision/{itemId}': NONE,\n // The Work's record — every guildmate reads it and it holds the target's one open request; the\n // proposer renders as Former Member, and a pending request stays open for the admin to decide.\n 'hallContentChangeRequests/{changeRequestId}': RETAIN,\n\n // ===== Square / Social =====\n 'squareStreetzFeed/activePosts/socialPosts/{postId}': DELETE,\n 'squareStreetzFeed/trendingPosts': NONE,\n // Both directions; each outbound edge decrements its target's count.\n 'followEdges/{followEdgeId}': DELETE,\n // The member's own counter; other members' counters name no one.\n 'followCounters/{followCounterId}': DELETE,\n // A job whose post the member would author is deleted in every status, so no pending, stale, or\n // replayed job posts under the erased account; a Work-authored announcement is retained.\n 'squareAnnouncementJobs/{jobId}': ['delete', 'retain'],\n 'craftSkillsByTag/{tag}/taggedCraftSkills/{compositeId}': DELETE,\n\n // ===== Commission / Audition =====\n // A posting belongs to its Work; its creator renders as Former Member.\n 'commissionListings/{commissionListingId}': RETAIN,\n 'commissionListings/{commissionListingId}/commissionProposals/{commissionProposalId}': DELETE,\n 'auditionBoard/{auditionId}': RETAIN,\n 'auditionBoard/{auditionId}/auditionEntries/{auditionEntryId}': DELETE,\n\n // ===== Payments =====\n 'pledgePayments/{pledgePaymentId}': RETAIN,\n // Money, dispute, and checkout-consent evidence, and the money ledger's integrity record: each kept\n // for as long as the pledge ledger it serves.\n 'pledgePaymentProviderRefs/{pledgePaymentId}': RETAIN,\n 'processedStripeEvents/{stripeEventId}': NONE,\n 'pledgePaymentLedgerEvents/{ledgerId}': RETAIN,\n 'paymentWebhookQuarantine/{stripeEventId}': RETAIN,\n 'pledgePaymentTotals/summary': NONE,\n // Money and chargeback evidence, kept account-id only for as long as the pledge ledger.\n 'pledgeRefundRequests/{requestId}': RETAIN,\n\n // ===== Reports / moderation / admin =====\n // A report the member filed: an ordinary report's reporter is anonymized; a report that opened a\n // child-safety or NCII case is retained with the case. A report someone else filed about the\n // member is theirs and the evidence behind a decision: retained, the member an account id, with\n // its frozen evidence snapshot.\n 'contentReports/{reportId}': ['anonymize', 'retain'],\n 'contentReports/{reportId}/publicProjection/{reportId}': NONE,\n 'contentReports/{reportId}/privateDetails/snapshot': RETAIN,\n // Ordinary report: deleted. Protected-case report: retained with the case.\n 'contentReports/{reportId}/privateDetails/narrative': ['delete', 'retain'],\n 'contentReports/{reportId}/privateDetails/narrativeEscalation': RETAIN,\n 'activeReportGroups/{groupKey}': RETAIN,\n 'activeReportGroups/{groupKey}/reportGroupCountedReports/{reportId}': NONE,\n // The member's appeal task, a solo draft's review task, and an own support thread's task are\n // deleted with their source; every other task is retained.\n 'adminTasks/{taskId}': ['delete', 'retain'],\n 'contentViolations/{violationId}': DELETE,\n 'moderationCascadeManifests/{cascadeId}': RETAIN,\n 'moderationCascadeManifests/{cascadeId}/changedDocs/{changedDocId}': RETAIN,\n 'auditEvents/{eventId}': RETAIN,\n 'stakeShareAuditEvents/{eventId}': RETAIN,\n // By `adminDispatchErasureFate`.\n 'pendingAdminDispatches/{adminDispatchId}': ['delete', 'anonymize'],\n 'pendingAdminDispatches/{adminDispatchId}/conversationMessages/{adminDispatchMessageId}': ['delete', 'anonymize'],\n // Deleted with a deleted thread; a kept thread keeps its files.\n 'pendingAdminDispatches/{adminDispatchId}/conversationFiles/{conversationFileId}': ['delete', 'retain'],\n // The member's own read position — nobody else reads it, so it goes with them.\n 'pendingAdminDispatches/{adminDispatchId}/dispatchReadMarkers/{uid}': DELETE,\n // A link others may already have shared; its creator is an account id only.\n 'shortLinks/{shortId}': RETAIN,\n // A suggestion is shared by everyone who sent the same word: the member is removed from its\n // submitter list, and the suggestion and its count stay.\n 'feedbackSubmissions/{feedbackType}/userSuggestions/{suggestionId}': ANONYMIZE,\n\n // ===== Media pipeline =====\n // A rejected upload's row is deleted with its violation; every other row is kept as an operational\n // record with its personal fields blanked and its staged original deleted, and a row still in\n // flight is made terminal so its activation job aborts instead of publishing.\n 'pendingMedia/{pendingMediaId}': ['delete', 'anonymize'],\n 'pendingMediaArchive/{pendingMediaId}': ['delete', 'anonymize'],\n // The member's own media is retired; media a Work owns is retained with the Work.\n 'mediaAssets/{mediaAssetId}': ['delete', 'retain'],\n // A job for the member's in-flight upload aborts through that upload's terminal row and is kept\n // as its closed record; every other job is retained.\n 'mediaActivationJobs/{jobId}': RETAIN,\n 'mediaCopyIntents/{newAssetId}': NONE,\n\n // ===== Notifications =====\n // Every notification sent to the member — its card, its delivery row in any state, its archive\n // job — is deleted. Another recipient's notification naming the member as actor is theirs: it is\n // kept, account id only, until its existing expiry. Admin cards are shared by the admin team, so\n // they only ever name the member as actor.\n 'activeUserNotifications/{notificationId}': ['delete', 'retain'],\n 'activeAdminNotifications/{notificationId}': RETAIN,\n 'adminNotificationHistory/{notificationId}': RETAIN,\n 'pendingNotifications/{notificationId}': ['delete', 'retain'],\n 'notificationDeliveries/{deliveryId}': ['delete', 'retain'],\n 'notificationFanoutJobs/{jobId}': RETAIN,\n 'notificationArchiveAllJobs/{jobId}': DELETE,\n\n // ===== Chat sync =====\n // Deleted LAST — after both chat legs are done, because their discovery reads these rows — so\n // no kept row re-seeds the member into a channel's membership.\n 'chatChannelAuthProjections/{authPairKey}': DELETE,\n 'chatScopeDegraded/{scopeKey}': RETAIN,\n 'chatScopeDegraded/{scopeKey}/chatScopeDegradedCauses/{causeId}': RETAIN,\n 'chatSyncEvents/{eventId}': RETAIN,\n 'chatSyncFanoutJobs/{jobId}': RETAIN,\n // Every unapplied opening message the member sent — pending or dead-lettered, whatever its\n // invite's state — is deleted before the live-chat leg, so it is never delivered under the erased\n // account (never seen, so nothing a kept conversation shows is lost); an applied row is retained\n // until its expiry.\n 'chatMessageOutbox/{commandId}': ['delete', 'retain'],\n 'chatAdminActionCommands/{requestId}': RETAIN,\n // The erasure's own anonymization work: the erasure completes only once every job for the member\n // is done; a done job is retained until its expiry.\n 'chatHistoryAnonymizationJobs/{jobId}': RETAIN,\n 'chatHistoryAnonymizationJobs/{jobId}/affectedChunks/{chunkOrdinal}': NONE,\n // An operator ledger row: a room's address (an inbox room's names its member) and ids only,\n // kept like the sync events it sits beside.\n 'chatParkedDeliveries/{deliveryId}': RETAIN,\n\n // ===== Public documents (admin-written) =====\n 'publicDocuments/{documentId}/publicDocumentVersions/{versionId}': RETAIN,\n 'publicDocumentDrafts/{documentId}': RETAIN,\n 'publicDocumentReleases/{releaseId}': RETAIN,\n\n // ===== Trust & Safety — retained under the safety evidence profile =====\n 'childSafetyCaseList/{caseId}': RETAIN,\n 'activeSafetyCaseAlerts/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}/sourceSignals/{signalId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}/childSafetyDecisionViews/{viewId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}/childSafetyCaseAccountHistory/{historyId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseCrossoverItems/{mediaAssetId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecSubmissionFiles/{fileId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecCompletionProof/record': RETAIN,\n 'childSafetyCases/{caseId}/legalProcess/{eventId}': RETAIN,\n 'childSafetyCases/{caseId}/portalReceiptArtifacts/{artifactId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecPortalCorrections/{correctionId}': RETAIN,\n 'childSafetyOwningAliases/{aliasId}': RETAIN,\n 'safetyHoldRefs/{holdRefId}': RETAIN,\n 'safetyHoldResources/{resourceKeyHash}': RETAIN,\n 'safetyResourceCommands/{commandDocId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/authorizedRequests/{requestId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/bypassRefs/{refId}': RETAIN,\n 'safetyEvidenceManifests/{manifestId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobItems/{itemId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobDisposition/{locationId}': RETAIN,\n // The `reportSubmit` row of an ordinary report the member filed is deleted; a protected-case\n // report's row is retained with the case, and a routine upload row for its existing 90-day window.\n 'eventProvenance/{eventId}': ['delete', 'retain'],\n 'quarantineSagaJobs/{caseId}': RETAIN,\n 'quarantineSagaJobs/{caseId}/relatedAssets/{assetId}': RETAIN,\n 'ncmecSubmissionJobs/{ncmecJobId}': RETAIN,\n 'accountActionCommands/{accountActionCommandId}': RETAIN,\n 'safetySlaMonitors/{monitorId}': NONE,\n 'safetyMonitorHeartbeat/global': NONE,\n // An admin's live step-up secret: no reader once the account is gone, and every enrollment and\n // verification is already recorded in the audit log.\n 'operatorStepUp/{uid}': DELETE,\n 'sweepState/{sweepName}': NONE,\n 'nciiAllegations/{allegationId}': RETAIN,\n 'takeItDownRequests/{requestId}': RETAIN,\n 'takeItDownRequests/{requestId}/privateDetails/requester': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownSubmissions/{submissionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}/takeItDownValidityRationale/record': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownActions/{actionId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidenceDisposition/{evidenceId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidence/{evidenceId}': RETAIN,\n 'nciiCases/{caseId}': RETAIN,\n 'nciiCases/{caseId}/allegationLinks/{allegationId}': RETAIN,\n 'nciiCases/{caseId}/requestLinks/{requestId}': RETAIN,\n 'nciiCases/{caseId}/removalActions/{actionId}': RETAIN,\n 'nciiCases/{caseId}/blockedHashes/{hashId}': RETAIN,\n 'nciiCases/{caseId}/closureEvents/{eventId}': RETAIN,\n 'nciiRetainedEvidenceInventory/{inventoryId}': RETAIN,\n 'nciiInventoryDeadLetter/{inventoryId}': RETAIN,\n 'nciiTemporaryHolds/{holdId}': RETAIN,\n 'nciiRemovalJobs/{jobId}': RETAIN,\n 'nciiRemovalJobs/{jobId}/nciiRemovalTargets/{targetKeyHash}': RETAIN,\n\n // ===== Singletons =====\n '_appConfig/app': NONE,\n '_appConfig/futurePlans': NONE,\n '_appConfig/rulesAndAgreements': NONE,\n '_appConfig/termsOfService': NONE,\n '_appConfig/privacyPolicy': NONE,\n '_appConfig/takeItDownPageCopy': NONE,\n '_appConfig/dmcaPolicy': NONE,\n '_serverData/agePolicy': NONE,\n '_serverData/nciiPolicy': RETAIN,\n '_serverData/privilegedReviewerSecurity': NONE,\n '_serverData/feedbackLists/feedbackAliases/{aliasId}': NONE,\n // An erased admin is removed from the roster through the roster core.\n '_systemData/adminList': ANONYMIZE,\n '_systemData/profanityList': NONE,\n '_systemData/reservedUsernames': NONE,\n '_systemData/blockedFranchiseNames': NONE,\n '_systemData/appMode': NONE,\n} as const satisfies { readonly [P in RegisteredCollectionPath]: ErasureFates };\n\n/** Every registered path whose declared fates include `fate`. */\nexport function collectionPathsWithErasureFate(fate: ErasureFate): RegisteredCollectionPath[] {\n return (Object.keys(ERASURE_FATES_BY_COLLECTION_PATH) as RegisteredCollectionPath[]).filter((path) =>\n (ERASURE_FATES_BY_COLLECTION_PATH[path] as ErasureFates).includes(fate),\n );\n}\n\n/**\n * The fate of a support thread that names the member being erased. Only the member's OWN user-party\n * thread — one they started, as its user — is theirs alone: it is deleted with its messages and\n * files. Every other thread naming them is kept with them shown as Former Member: one the admin\n * team started to them, a Work thread they started, and another member's thread they took part in\n * (an erased admin's replies never delete a member's thread).\n */\nexport function adminDispatchErasureFate(\n thread: Pick<AdminDispatch, 'partyKind' | 'initiatedBy' | 'userId'>,\n erasedUid: string,\n): Extract<ErasureFate, 'delete' | 'anonymize'> {\n return thread.partyKind === 'user' && thread.initiatedBy === 'user' && thread.userId === erasedUid\n ? 'delete'\n : 'anonymize';\n}\n"]}
1
+ {"version":3,"file":"erasure-fates.js","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,2FAA2F;AAC3F,kGAAkG;AAClG,kCAAkC;AAClC,EAAE;AACF,uFAAuF;AACvF,oGAAoG;AACpG,yEAAyE;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAKvD,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAU,CAAC;AACnC,MAAM,SAAS,GAAG,CAAC,WAAW,CAAU,CAAC;AACzC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAU,CAAC;AACnC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAU,CAAC;AAC/B,iGAAiG;AACjG,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEtD,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,uCAAuC;IACvC,uBAAuB,EAAE,SAAS;IAClC,4CAA4C,EAAE,MAAM;IACpD,iDAAiD;IACjD,0DAA0D,EAAE,MAAM;IAClE,yDAAyD,EAAE,MAAM;IACjE,kDAAkD,EAAE,MAAM;IAC1D,8CAA8C,EAAE,MAAM;IACtD,4DAA4D,EAAE,MAAM;IACpE,4DAA4D;IAC5D,yEAAyE,EAAE,MAAM;IACjF,mBAAmB,EAAE,SAAS;IAC9B,6CAA6C,EAAE,MAAM;IACrD,kFAAkF;IAClF,+BAA+B,EAAE,MAAM;IACvC,yGAAyG;IACzG,4BAA4B,EAAE,MAAM;IACpC,kCAAkC,EAAE,MAAM;IAE1C,mCAAmC;IACnC,iCAAiC,EAAE,eAAe;IAClD,kDAAkD;IAClD,sDAAsD,EAAE,eAAe;IACvE,4DAA4D,EAAE,eAAe;IAC7E,oEAAoE,EAAE,eAAe;IACrF,2FAA2F,EAAE,eAAe;IAC5G,uEAAuE,EAAE,eAAe;IACxF,2DAA2D,EAAE,eAAe;IAC5E,oFAAoF,EAAE,eAAe;IACrG,2DAA2D,EAAE,eAAe;IAC5E,gFAAgF,EAAE,eAAe;IACjG,sEAAsE,EAAE,eAAe;IACvF,qGAAqG,EAAE,eAAe;IACtH,wEAAwE,EAAE,eAAe;IACzF,oCAAoC,EAAE,eAAe;IACrD,8EAA8E;IAC9E,0BAA0B,EAAE,eAAe;IAC3C,4CAA4C,EAAE,eAAe;IAC7D,+DAA+D,EAAE,MAAM;IACvE,2FAA2F;IAC3F,uFAAuF;IACvF,0CAA0C,EAAE,MAAM;IAClD,kGAAkG;IAClG,uDAAuD;IACvD,iFAAiF,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvG,kCAAkC,EAAE,eAAe;IACnD,wBAAwB,EAAE,IAAI;IAC9B,+CAA+C,EAAE,IAAI;IACrD,+CAA+C,EAAE,IAAI;IACrD,oDAAoD,EAAE,IAAI;IAC1D,+FAA+F;IAC/F,+FAA+F;IAC/F,6CAA6C,EAAE,MAAM;IAErD,8BAA8B;IAC9B,oDAAoD,EAAE,MAAM;IAC5D,iCAAiC,EAAE,IAAI;IACvC,qEAAqE;IACrE,4BAA4B,EAAE,MAAM;IACpC,iEAAiE;IACjE,kCAAkC,EAAE,MAAM;IAC1C,gGAAgG;IAChG,yFAAyF;IACzF,gCAAgC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACtD,wDAAwD,EAAE,MAAM;IAEhE,oCAAoC;IACpC,uEAAuE;IACvE,0CAA0C,EAAE,MAAM;IAClD,qFAAqF,EAAE,MAAM;IAC7F,4BAA4B,EAAE,MAAM;IACpC,8DAA8D,EAAE,MAAM;IAEtE,uBAAuB;IACvB,kCAAkC,EAAE,MAAM;IAC1C,oGAAoG;IACpG,8CAA8C;IAC9C,6CAA6C,EAAE,MAAM;IACrD,uCAAuC,EAAE,IAAI;IAC7C,sCAAsC,EAAE,MAAM;IAC9C,0CAA0C,EAAE,MAAM;IAClD,6BAA6B,EAAE,IAAI;IACnC,wFAAwF;IACxF,kCAAkC,EAAE,MAAM;IAE1C,2CAA2C;IAC3C,iGAAiG;IACjG,6FAA6F;IAC7F,gGAAgG;IAChG,gCAAgC;IAChC,2BAA2B,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpD,uDAAuD,EAAE,IAAI;IAC7D,mDAAmD,EAAE,MAAM;IAC3D,2EAA2E;IAC3E,oDAAoD,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1E,8DAA8D,EAAE,MAAM;IACtE,+BAA+B,EAAE,MAAM;IACvC,oEAAoE,EAAE,IAAI;IAC1E,6FAA6F;IAC7F,2DAA2D;IAC3D,qBAAqB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3C,iCAAiC,EAAE,MAAM;IACzC,wCAAwC,EAAE,MAAM;IAChD,mEAAmE,EAAE,MAAM;IAC3E,uBAAuB,EAAE,MAAM;IAC/B,iCAAiC,EAAE,MAAM;IACzC,iCAAiC;IACjC,0CAA0C,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACnE,wFAAwF,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACjH,gEAAgE;IAChE,iFAAiF,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvG,+EAA+E;IAC/E,oEAAoE,EAAE,MAAM;IAC5E,4EAA4E;IAC5E,sBAAsB,EAAE,MAAM;IAC9B,4FAA4F;IAC5F,yDAAyD;IACzD,mEAAmE,EAAE,SAAS;IAE9E,6BAA6B;IAC7B,mGAAmG;IACnG,8FAA8F;IAC9F,8EAA8E;IAC9E,+BAA+B,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACxD,sCAAsC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/D,kFAAkF;IAClF,4BAA4B,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAClD,gGAAgG;IAChG,qDAAqD;IACrD,6BAA6B,EAAE,MAAM;IACrC,+BAA+B,EAAE,IAAI;IAErC,4BAA4B;IAC5B,+FAA+F;IAC/F,iGAAiG;IACjG,iGAAiG;IACjG,2CAA2C;IAC3C,0CAA0C,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAChE,2CAA2C,EAAE,MAAM;IACnD,2CAA2C,EAAE,MAAM;IACnD,uCAAuC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7D,qCAAqC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3D,gCAAgC,EAAE,MAAM;IACxC,oCAAoC,EAAE,MAAM;IAE5C,wBAAwB;IACxB,8FAA8F;IAC9F,+DAA+D;IAC/D,0CAA0C,EAAE,MAAM;IAClD,8BAA8B,EAAE,MAAM;IACtC,gEAAgE,EAAE,MAAM;IACxE,0BAA0B,EAAE,MAAM;IAClC,4BAA4B,EAAE,MAAM;IACpC,2FAA2F;IAC3F,kGAAkG;IAClG,iGAAiG;IACjG,oBAAoB;IACpB,+BAA+B,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrD,qCAAqC,EAAE,MAAM;IAC7C,iGAAiG;IACjG,oDAAoD;IACpD,sCAAsC,EAAE,MAAM;IAC9C,oEAAoE,EAAE,IAAI;IAC1E,4FAA4F;IAC5F,4CAA4C;IAC5C,mCAAmC,EAAE,MAAM;IAE3C,+CAA+C;IAC/C,iEAAiE,EAAE,MAAM;IACzE,mCAAmC,EAAE,MAAM;IAC3C,oCAAoC,EAAE,MAAM;IAE5C,0EAA0E;IAC1E,8BAA8B,EAAE,MAAM;IACtC,iCAAiC,EAAE,MAAM;IACzC,2BAA2B,EAAE,MAAM;IACnC,oDAAoD,EAAE,MAAM;IAC5D,6DAA6D,EAAE,MAAM;IACrE,+FAA+F,EAAE,MAAM;IACvG,yDAAyD,EAAE,MAAM;IACjE,mGAAmG,EAAE,MAAM;IAC3G,wEAAwE,EAAE,MAAM;IAChF,2DAA2D,EAAE,MAAM;IACnE,yFAAyF,EAAE,MAAM;IACjG,uFAAuF,EAAE,MAAM;IAC/F,kDAAkD,EAAE,MAAM;IAC1D,+DAA+D,EAAE,MAAM;IACvE,iEAAiE,EAAE,MAAM;IACzE,oCAAoC,EAAE,MAAM;IAC5C,4BAA4B,EAAE,MAAM;IACpC,uCAAuC,EAAE,MAAM;IAC/C,uCAAuC,EAAE,MAAM;IAC/C,sEAAsE,EAAE,MAAM;IAC9E,0DAA0D,EAAE,MAAM;IAClE,sCAAsC,EAAE,MAAM;IAC9C,4BAA4B,EAAE,MAAM;IACpC,4DAA4D,EAAE,MAAM;IACpE,sEAAsE,EAAE,MAAM;IAC9E,6FAA6F;IAC7F,mGAAmG;IACnG,2BAA2B,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACjD,6BAA6B,EAAE,MAAM;IACrC,qDAAqD,EAAE,MAAM;IAC7D,kCAAkC,EAAE,MAAM;IAC1C,gDAAgD,EAAE,MAAM;IACxD,+BAA+B,EAAE,IAAI;IACrC,+BAA+B,EAAE,IAAI;IACrC,+FAA+F;IAC/F,qDAAqD;IACrD,sBAAsB,EAAE,MAAM;IAC9B,wBAAwB,EAAE,IAAI;IAC9B,gCAAgC,EAAE,MAAM;IACxC,gCAAgC,EAAE,MAAM;IACxC,yDAAyD,EAAE,MAAM;IACjE,qEAAqE,EAAE,MAAM;IAC7E,+DAA+D,EAAE,MAAM;IACvE,kGAAkG,EAAE,MAAM;IAC1G,6DAA6D,EAAE,MAAM;IACrE,2EAA2E,EAAE,MAAM;IACnF,gEAAgE,EAAE,MAAM;IACxE,oBAAoB,EAAE,MAAM;IAC5B,mDAAmD,EAAE,MAAM;IAC3D,6CAA6C,EAAE,MAAM;IACrD,8CAA8C,EAAE,MAAM;IACtD,2CAA2C,EAAE,MAAM;IACnD,4CAA4C,EAAE,MAAM;IACpD,6CAA6C,EAAE,MAAM;IACrD,uCAAuC,EAAE,MAAM;IAC/C,6BAA6B,EAAE,MAAM;IACrC,yBAAyB,EAAE,MAAM;IACjC,4DAA4D,EAAE,MAAM;IAEpE,yBAAyB;IACzB,gBAAgB,EAAE,IAAI;IACtB,wBAAwB,EAAE,IAAI;IAC9B,+BAA+B,EAAE,IAAI;IACrC,2BAA2B,EAAE,IAAI;IACjC,0BAA0B,EAAE,IAAI;IAChC,+BAA+B,EAAE,IAAI;IACrC,uBAAuB,EAAE,IAAI;IAC7B,iFAAiF;IACjF,2BAA2B,EAAE,MAAM;IACnC,uBAAuB,EAAE,IAAI;IAC7B,wBAAwB,EAAE,MAAM;IAChC,wCAAwC,EAAE,IAAI;IAC9C,qDAAqD,EAAE,IAAI;IAC3D,sEAAsE;IACtE,uBAAuB,EAAE,SAAS;IAClC,2BAA2B,EAAE,IAAI;IACjC,+BAA+B,EAAE,IAAI;IACrC,mCAAmC,EAAE,IAAI;IACzC,qBAAqB,EAAE,IAAI;IAC3B,8BAA8B,EAAE,IAAI;CACyC,CAAC;AAEhF,iEAAiE;AACjE,MAAM,UAAU,8BAA8B,CAAC,IAAiB;IAC9D,OAAQ,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAgC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAClG,gCAAgC,CAAC,IAAI,CAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACxE,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAmE,EACnE,SAAiB;IAEjB,OAAO,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAChG,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC","sourcesContent":["// The account-erasure fate of every registered Firestore path — what erasing one member does to\n// the documents there that belong to or name them. TOTAL over COLLECTION_SCHEMAS, so a new\n// collection cannot be registered without declaring its fate; the erasure scrub and the published\n// deletion policy both follow it.\n//\n// A path listing two fates splits by the per-document rule written at its entry. Every\n// destructive fate is subject to the scrub's hold carve-out: a document under a safety hold is left\n// untouched and the erasure stays incomplete until the hold is released.\n\nimport { z } from 'zod';\nimport type { AdminDispatch } from './messaging.js';\nimport type { RegisteredCollectionPath } from './registry.js';\n\n/**\n * - `delete` — the member's documents there are deleted; a media asset is retired (its bytes\n * removed, its doc tombstoned).\n * - `anonymize` — kept, with the member's identity rewritten in place (the Former Member identity,\n * the chat tombstone, `reporterUid: 'erased'`, blanked personal fields).\n * - `retain` — kept unchanged; a uid it holds renders as Former Member through the anonymized\n * public mirror.\n * - `none` — no document there belongs to or names a member.\n */\nexport const ERASURE_FATES = ['delete', 'anonymize', 'retain', 'none'] as const;\nexport const ErasureFateSchema = z.enum(ERASURE_FATES);\nexport type ErasureFate = z.infer<typeof ErasureFateSchema>;\n\ntype ErasureFates = readonly [ErasureFate, ...ErasureFate[]];\n\nconst DELETE = ['delete'] as const;\nconst ANONYMIZE = ['anonymize'] as const;\nconst RETAIN = ['retain'] as const;\nconst NONE = ['none'] as const;\n/** A Work-owned path: deleted with a solo unpublished draft Work, retained on any other Work. */\nconst SOLO_DRAFT_WORK = ['delete', 'retain'] as const;\n\nexport const ERASURE_FATES_BY_COLLECTION_PATH = {\n // ===== The member's own account =====\n 'userProfiles/{userId}': ANONYMIZE,\n 'userProfiles/{userId}/privateData/{userId}': DELETE,\n // Viewing history, resume points, and watchlist.\n 'userProfiles/{userId}/privateData/hallLibraryPreferences': DELETE,\n 'userProfiles/{userId}/profileCraftSkills/{craftSkillId}': DELETE,\n 'userProfiles/{userId}/auditionVotes/{auditionId}': DELETE,\n 'userProfiles/{userId}/mentionHistory/{docId}': DELETE,\n 'userProfiles/{userId}/notificationHistory/{notificationId}': DELETE,\n // The member's like history; the like counts on posts stay.\n 'userProfiles/{userId}/userLikes/likeHistory/squareStreetzLikes/{postId}': DELETE,\n 'publicUsers/{uid}': ANONYMIZE,\n 'reservedDisplayNames/{displayNameUppercase}': DELETE,\n // The compliance record of the erasure itself: kept permanently, account id only.\n 'accountDeletionRequests/{uid}': RETAIN,\n // No scrub step: the account-status drain deletes the entry on its next run, once the Auth user is gone.\n 'statusReconcileQueue/{uid}': DELETE,\n 'ageAttestationNonces/{nonceHash}': RETAIN,\n\n // ===== Work / Realm / Guild =====\n 'allWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n // Otherwise the membership is kept as `departed`.\n 'allWorkProjects/{workProjectId}/guildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/publicGuildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}/workFiles/{workFileId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/hallSubmissionReservation/reservation': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}/taleChapters/{chapterId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}/tuneTracks/{trackId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}/televisionEpisodes/{episodeId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/guildChatChannels/{guildChatChannelId}': SOLO_DRAFT_WORK,\n 'publicWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n // Deleted with a draft Realm the solo draft founded and no other Work joined.\n 'workRealms/{workRealmId}': SOLO_DRAFT_WORK,\n 'reservedRealmNames/{workingTitleUppercase}': SOLO_DRAFT_WORK,\n 'workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}': RETAIN,\n // The two parties' invite, and how a guildmate joined with stake: an open invite is closed\n // (cancelled or declined) and every invite is kept, the member shown as Former Member.\n 'guildInviteConversations/{guildInviteId}': RETAIN,\n // A file the member uploaded is deleted, its bytes retired first (only its uploader controls it);\n // a file the other party uploaded is theirs and stays.\n 'guildInviteConversations/{guildInviteId}/conversationFiles/{conversationFileId}': ['delete', 'retain'],\n 'thresholdItems/{thresholdItemId}': SOLO_DRAFT_WORK,\n 'hallItems/{hallItemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTales/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTunes/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTelevision/{itemId}': NONE,\n // The Work's record — every guildmate reads it and it holds the target's one open request; the\n // proposer renders as Former Member, and a pending request stays open for the admin to decide.\n 'hallContentChangeRequests/{changeRequestId}': RETAIN,\n\n // ===== Square / Social =====\n 'squareStreetzFeed/activePosts/socialPosts/{postId}': DELETE,\n 'squareStreetzFeed/trendingPosts': NONE,\n // Both directions; each outbound edge decrements its target's count.\n 'followEdges/{followEdgeId}': DELETE,\n // The member's own counter; other members' counters name no one.\n 'followCounters/{followCounterId}': DELETE,\n // A job whose post the member would author is deleted in every status, so no pending, stale, or\n // replayed job posts under the erased account; a Work-authored announcement is retained.\n 'squareAnnouncementJobs/{jobId}': ['delete', 'retain'],\n 'craftSkillsByTag/{tag}/taggedCraftSkills/{compositeId}': DELETE,\n\n // ===== Commission / Audition =====\n // A posting belongs to its Work; its creator renders as Former Member.\n 'commissionListings/{commissionListingId}': RETAIN,\n 'commissionListings/{commissionListingId}/commissionProposals/{commissionProposalId}': DELETE,\n 'auditionBoard/{auditionId}': RETAIN,\n 'auditionBoard/{auditionId}/auditionEntries/{auditionEntryId}': DELETE,\n\n // ===== Payments =====\n 'pledgePayments/{pledgePaymentId}': RETAIN,\n // Money, dispute, and checkout-consent evidence, and the money ledger's integrity record: each kept\n // for as long as the pledge ledger it serves.\n 'pledgePaymentProviderRefs/{pledgePaymentId}': RETAIN,\n 'processedStripeEvents/{stripeEventId}': NONE,\n 'pledgePaymentLedgerEvents/{ledgerId}': RETAIN,\n 'paymentWebhookQuarantine/{stripeEventId}': RETAIN,\n 'pledgePaymentTotals/summary': NONE,\n // Money and chargeback evidence, kept account-id only for as long as the pledge ledger.\n 'pledgeRefundRequests/{requestId}': RETAIN,\n\n // ===== Reports / moderation / admin =====\n // A report the member filed: an ordinary report's reporter is anonymized; a report that opened a\n // child-safety or NCII case is retained with the case. A report someone else filed about the\n // member is theirs and the evidence behind a decision: retained, the member an account id, with\n // its frozen evidence snapshot.\n 'contentReports/{reportId}': ['anonymize', 'retain'],\n 'contentReports/{reportId}/publicProjection/{reportId}': NONE,\n 'contentReports/{reportId}/privateDetails/snapshot': RETAIN,\n // Ordinary report: deleted. Protected-case report: retained with the case.\n 'contentReports/{reportId}/privateDetails/narrative': ['delete', 'retain'],\n 'contentReports/{reportId}/privateDetails/narrativeEscalation': RETAIN,\n 'activeReportGroups/{groupKey}': RETAIN,\n 'activeReportGroups/{groupKey}/reportGroupCountedReports/{reportId}': NONE,\n // The member's appeal task, a solo draft's review task, and an own support thread's task are\n // deleted with their source; every other task is retained.\n 'adminTasks/{taskId}': ['delete', 'retain'],\n 'contentViolations/{violationId}': DELETE,\n 'moderationCascadeManifests/{cascadeId}': RETAIN,\n 'moderationCascadeManifests/{cascadeId}/changedDocs/{changedDocId}': RETAIN,\n 'auditEvents/{eventId}': RETAIN,\n 'stakeShareAuditEvents/{eventId}': RETAIN,\n // By `adminDispatchErasureFate`.\n 'pendingAdminDispatches/{adminDispatchId}': ['delete', 'anonymize'],\n 'pendingAdminDispatches/{adminDispatchId}/conversationMessages/{adminDispatchMessageId}': ['delete', 'anonymize'],\n // Deleted with a deleted thread; a kept thread keeps its files.\n 'pendingAdminDispatches/{adminDispatchId}/conversationFiles/{conversationFileId}': ['delete', 'retain'],\n // The member's own read position — nobody else reads it, so it goes with them.\n 'pendingAdminDispatches/{adminDispatchId}/dispatchReadMarkers/{uid}': DELETE,\n // A link others may already have shared; its creator is an account id only.\n 'shortLinks/{shortId}': RETAIN,\n // A suggestion is shared by everyone who sent the same word: the member is removed from its\n // submitter list, and the suggestion and its count stay.\n 'feedbackSubmissions/{feedbackType}/userSuggestions/{suggestionId}': ANONYMIZE,\n\n // ===== Media pipeline =====\n // A rejected upload's row is deleted with its violation; every other row is kept as an operational\n // record with its personal fields blanked and its staged original deleted, and a row still in\n // flight is made terminal so its activation job aborts instead of publishing.\n 'pendingMedia/{pendingMediaId}': ['delete', 'anonymize'],\n 'pendingMediaArchive/{pendingMediaId}': ['delete', 'anonymize'],\n // The member's own media is retired; media a Work owns is retained with the Work.\n 'mediaAssets/{mediaAssetId}': ['delete', 'retain'],\n // A job for the member's in-flight upload aborts through that upload's terminal row and is kept\n // as its closed record; every other job is retained.\n 'mediaActivationJobs/{jobId}': RETAIN,\n 'mediaCopyIntents/{newAssetId}': NONE,\n\n // ===== Notifications =====\n // Every notification sent to the member — its card, its delivery row in any state, its archive\n // job — is deleted. Another recipient's notification naming the member as actor is theirs: it is\n // kept, account id only, until its existing expiry. Admin cards are shared by the admin team, so\n // they only ever name the member as actor.\n 'activeUserNotifications/{notificationId}': ['delete', 'retain'],\n 'activeAdminNotifications/{notificationId}': RETAIN,\n 'adminNotificationHistory/{notificationId}': RETAIN,\n 'pendingNotifications/{notificationId}': ['delete', 'retain'],\n 'notificationDeliveries/{deliveryId}': ['delete', 'retain'],\n 'notificationFanoutJobs/{jobId}': RETAIN,\n 'notificationArchiveAllJobs/{jobId}': DELETE,\n\n // ===== Chat sync =====\n // Deleted LAST — after both chat legs are done, because their discovery reads these rows — so\n // no kept row re-seeds the member into a channel's membership.\n 'chatChannelAuthProjections/{authPairKey}': DELETE,\n 'chatScopeDegraded/{scopeKey}': RETAIN,\n 'chatScopeDegraded/{scopeKey}/chatScopeDegradedCauses/{causeId}': RETAIN,\n 'chatSyncEvents/{eventId}': RETAIN,\n 'chatSyncFanoutJobs/{jobId}': RETAIN,\n // Every unapplied opening message the member sent — pending or dead-lettered, whatever its\n // invite's state — is deleted before the live-chat leg, so it is never delivered under the erased\n // account (never seen, so nothing a kept conversation shows is lost); an applied row is retained\n // until its expiry.\n 'chatMessageOutbox/{commandId}': ['delete', 'retain'],\n 'chatAdminActionCommands/{requestId}': RETAIN,\n // The erasure's own anonymization work: the erasure completes only once every job for the member\n // is done; a done job is retained until its expiry.\n 'chatHistoryAnonymizationJobs/{jobId}': RETAIN,\n 'chatHistoryAnonymizationJobs/{jobId}/affectedChunks/{chunkOrdinal}': NONE,\n // An operator ledger row: a room's address (an inbox room's names its member) and ids only,\n // kept like the sync events it sits beside.\n 'chatParkedDeliveries/{deliveryId}': RETAIN,\n\n // ===== Public documents (admin-written) =====\n 'publicDocuments/{documentId}/publicDocumentVersions/{versionId}': RETAIN,\n 'publicDocumentDrafts/{documentId}': RETAIN,\n 'publicDocumentReleases/{releaseId}': RETAIN,\n\n // ===== Trust & Safety — retained under the safety evidence profile =====\n 'childSafetyCaseList/{caseId}': RETAIN,\n 'activeSafetyCaseAlerts/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}/sourceSignals/{signalId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}/childSafetyDecisionViews/{viewId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}/childSafetyCaseAccountHistory/{historyId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseCrossoverItems/{mediaAssetId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecSubmissionFiles/{fileId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecCompletionProof/record': RETAIN,\n 'childSafetyCases/{caseId}/legalProcess/{eventId}': RETAIN,\n 'childSafetyCases/{caseId}/portalReceiptArtifacts/{artifactId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecPortalCorrections/{correctionId}': RETAIN,\n 'childSafetyOwningAliases/{aliasId}': RETAIN,\n 'safetyHoldRefs/{holdRefId}': RETAIN,\n 'safetyHoldResources/{resourceKeyHash}': RETAIN,\n 'safetyResourceCommands/{commandDocId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/authorizedRequests/{requestId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/bypassRefs/{refId}': RETAIN,\n 'safetyEvidenceManifests/{manifestId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobItems/{itemId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobDisposition/{locationId}': RETAIN,\n // The `reportSubmit` row of an ordinary report the member filed is deleted; a protected-case\n // report's row is retained with the case, and a routine upload row for its existing 90-day window.\n 'eventProvenance/{eventId}': ['delete', 'retain'],\n 'quarantineSagaJobs/{caseId}': RETAIN,\n 'quarantineSagaJobs/{caseId}/relatedAssets/{assetId}': RETAIN,\n 'ncmecSubmissionJobs/{ncmecJobId}': RETAIN,\n 'accountActionCommands/{accountActionCommandId}': RETAIN,\n 'safetySlaMonitors/{monitorId}': NONE,\n 'safetyMonitorHeartbeat/global': NONE,\n // An admin's live step-up secret: no reader once the account is gone, and every enrollment and\n // verification is already recorded in the audit log.\n 'operatorStepUp/{uid}': DELETE,\n 'sweepState/{sweepName}': NONE,\n 'nciiAllegations/{allegationId}': RETAIN,\n 'takeItDownRequests/{requestId}': RETAIN,\n 'takeItDownRequests/{requestId}/privateDetails/requester': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownSubmissions/{submissionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}/takeItDownValidityRationale/record': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownActions/{actionId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidenceDisposition/{evidenceId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidence/{evidenceId}': RETAIN,\n 'nciiCases/{caseId}': RETAIN,\n 'nciiCases/{caseId}/allegationLinks/{allegationId}': RETAIN,\n 'nciiCases/{caseId}/requestLinks/{requestId}': RETAIN,\n 'nciiCases/{caseId}/removalActions/{actionId}': RETAIN,\n 'nciiCases/{caseId}/blockedHashes/{hashId}': RETAIN,\n 'nciiCases/{caseId}/closureEvents/{eventId}': RETAIN,\n 'nciiRetainedEvidenceInventory/{inventoryId}': RETAIN,\n 'nciiInventoryDeadLetter/{inventoryId}': RETAIN,\n 'nciiTemporaryHolds/{holdId}': RETAIN,\n 'nciiRemovalJobs/{jobId}': RETAIN,\n 'nciiRemovalJobs/{jobId}/nciiRemovalTargets/{targetKeyHash}': RETAIN,\n\n // ===== Singletons =====\n '_appConfig/app': NONE,\n '_appConfig/futurePlans': NONE,\n '_appConfig/rulesAndAgreements': NONE,\n '_appConfig/termsOfService': NONE,\n '_appConfig/privacyPolicy': NONE,\n '_appConfig/takeItDownPageCopy': NONE,\n '_appConfig/dmcaPolicy': NONE,\n // A slot naming the erased member keeps the uid, which renders as Former Member.\n '_appConfig/systemUidSlots': RETAIN,\n '_serverData/agePolicy': NONE,\n '_serverData/nciiPolicy': RETAIN,\n '_serverData/privilegedReviewerSecurity': NONE,\n '_serverData/feedbackLists/feedbackAliases/{aliasId}': NONE,\n // An erased admin is removed from the roster through the roster core.\n '_systemData/adminList': ANONYMIZE,\n '_systemData/profanityList': NONE,\n '_systemData/reservedUsernames': NONE,\n '_systemData/blockedFranchiseNames': NONE,\n '_systemData/appMode': NONE,\n '_systemData/systemVideoSlots': NONE,\n} as const satisfies { readonly [P in RegisteredCollectionPath]: ErasureFates };\n\n/** Every registered path whose declared fates include `fate`. */\nexport function collectionPathsWithErasureFate(fate: ErasureFate): RegisteredCollectionPath[] {\n return (Object.keys(ERASURE_FATES_BY_COLLECTION_PATH) as RegisteredCollectionPath[]).filter((path) =>\n (ERASURE_FATES_BY_COLLECTION_PATH[path] as ErasureFates).includes(fate),\n );\n}\n\n/**\n * The fate of a support thread that names the member being erased. Only the member's OWN user-party\n * thread — one they started, as its user — is theirs alone: it is deleted with its messages and\n * files. Every other thread naming them is kept with them shown as Former Member: one the admin\n * team started to them, a Work thread they started, and another member's thread they took part in\n * (an erased admin's replies never delete a member's thread).\n */\nexport function adminDispatchErasureFate(\n thread: Pick<AdminDispatch, 'partyKind' | 'initiatedBy' | 'userId'>,\n erasedUid: string,\n): Extract<ErasureFate, 'delete' | 'anonymize'> {\n return thread.partyKind === 'user' && thread.initiatedBy === 'user' && thread.userId === erasedUid\n ? 'delete'\n : 'anonymize';\n}\n"]}
@@ -14,6 +14,7 @@ export * from './commissions.js';
14
14
  export * from './messaging.js';
15
15
  export * from './admin-dispatch-read-markers.js';
16
16
  export * from './system.js';
17
+ export * from './system-slots.js';
17
18
  export * from './public-documents.js';
18
19
  export * from './legal-review-notice.js';
19
20
  export * from './moderation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kCAAkC,CAAC;AACjD,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kCAAkC,CAAC;AACjD,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC"}
@@ -19,6 +19,7 @@ export * from './commissions.js';
19
19
  export * from './messaging.js';
20
20
  export * from './admin-dispatch-read-markers.js';
21
21
  export * from './system.js';
22
+ export * from './system-slots.js';
22
23
  export * from './public-documents.js';
23
24
  export * from './legal-review-notice.js';
24
25
  export * from './moderation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AAEnF,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kCAAkC,CAAC;AACjD,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,6EAA6E;AAC7E,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAEhC,0DAA0D;AAC1D,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,sDAAsD;AACtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAE9B,4DAA4D;AAC5D,cAAc,oBAAoB,CAAC","sourcesContent":["// Barrel for the Firestore document SCHEMAS (Zod) and the collection registry.\n// Exposed on the `@ttt-productions/ttt-core/doc-schemas` subpath. The schema registry\n// (COLLECTION_SCHEMAS) is consumed by the schema-doc generator (ttt-packages) and the\n// drift-check (ttt-prod). Document TYPES are inferred from these schemas and surface on\n// the main barrel via ../types/*; this subpath is the home of the runtime schemas.\n\nexport * from './user.js';\nexport * from './firestore-primitives.js';\nexport * from './media-assets.js';\nexport * from './media-activation-jobs.js';\nexport * from './media-copy-intents.js';\nexport * from './publicUser.js';\nexport * from './account-deletion.js';\nexport * from './work-project.js';\nexport * from './content.js';\nexport * from './social.js';\nexport * from './square-announcement-jobs.js';\nexport * from './payments.js';\nexport * from './commissions.js';\nexport * from './messaging.js';\nexport * from './admin-dispatch-read-markers.js';\nexport * from './system.js';\nexport * from './public-documents.js';\nexport * from './legal-review-notice.js';\nexport * from './moderation.js';\nexport * from './report-docs.js';\nexport * from './audit.js';\nexport * from './notifications.js';\nexport * from './notification-ledger.js';\nexport * from './notification-archive-all-jobs.js';\nexport * from './chat-sync.js';\nexport * from './operational.js';\n\n// ===== Trust & Safety — shared foundation + cluster schemas (§A1–A11) =====\nexport * from './safety/foundation.js';\nexport * from './safety/report.js';\nexport * from './safety/case-alert.js';\nexport * from './safety/case.js';\nexport * from './safety/case-aliases.js';\nexport * from './safety/holds.js';\nexport * from './safety/evidence.js';\nexport * from './safety/provenance.js';\nexport * from './safety/sagas.js';\nexport * from './safety/monitors.js';\nexport * from './safety/age.js';\n\n// ===== Trust & Safety — NCII / TAKE IT DOWN (§A11) =====\nexport * from './ncii/allegations.js';\nexport * from './ncii/requests.js';\nexport * from './ncii/cases.js';\nexport * from './ncii/holds.js';\nexport * from './ncii/removal.js';\nexport * from './ncii/config.js';\n\n// ===== Backend-only cursor / operational state =====\nexport * from './backend-state.js';\nexport * from './sweep-cursor.js';\n\nexport * from './registry.js';\n\n// ===== Account-erasure fate of every registered path =====\nexport * from './erasure-fates.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AAEnF,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kCAAkC,CAAC;AACjD,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,6EAA6E;AAC7E,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAEhC,0DAA0D;AAC1D,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,sDAAsD;AACtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAE9B,4DAA4D;AAC5D,cAAc,oBAAoB,CAAC","sourcesContent":["// Barrel for the Firestore document SCHEMAS (Zod) and the collection registry.\n// Exposed on the `@ttt-productions/ttt-core/doc-schemas` subpath. The schema registry\n// (COLLECTION_SCHEMAS) is consumed by the schema-doc generator (ttt-packages) and the\n// drift-check (ttt-prod). Document TYPES are inferred from these schemas and surface on\n// the main barrel via ../types/*; this subpath is the home of the runtime schemas.\n\nexport * from './user.js';\nexport * from './firestore-primitives.js';\nexport * from './media-assets.js';\nexport * from './media-activation-jobs.js';\nexport * from './media-copy-intents.js';\nexport * from './publicUser.js';\nexport * from './account-deletion.js';\nexport * from './work-project.js';\nexport * from './content.js';\nexport * from './social.js';\nexport * from './square-announcement-jobs.js';\nexport * from './payments.js';\nexport * from './commissions.js';\nexport * from './messaging.js';\nexport * from './admin-dispatch-read-markers.js';\nexport * from './system.js';\nexport * from './system-slots.js';\nexport * from './public-documents.js';\nexport * from './legal-review-notice.js';\nexport * from './moderation.js';\nexport * from './report-docs.js';\nexport * from './audit.js';\nexport * from './notifications.js';\nexport * from './notification-ledger.js';\nexport * from './notification-archive-all-jobs.js';\nexport * from './chat-sync.js';\nexport * from './operational.js';\n\n// ===== Trust & Safety — shared foundation + cluster schemas (§A1–A11) =====\nexport * from './safety/foundation.js';\nexport * from './safety/report.js';\nexport * from './safety/case-alert.js';\nexport * from './safety/case.js';\nexport * from './safety/case-aliases.js';\nexport * from './safety/holds.js';\nexport * from './safety/evidence.js';\nexport * from './safety/provenance.js';\nexport * from './safety/sagas.js';\nexport * from './safety/monitors.js';\nexport * from './safety/age.js';\n\n// ===== Trust & Safety — NCII / TAKE IT DOWN (§A11) =====\nexport * from './ncii/allegations.js';\nexport * from './ncii/requests.js';\nexport * from './ncii/cases.js';\nexport * from './ncii/holds.js';\nexport * from './ncii/removal.js';\nexport * from './ncii/config.js';\n\n// ===== Backend-only cursor / operational state =====\nexport * from './backend-state.js';\nexport * from './sweep-cursor.js';\n\nexport * from './registry.js';\n\n// ===== Account-erasure fate of every registered path =====\nexport * from './erasure-fates.js';\n"]}
@@ -31,6 +31,7 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
31
31
  "television-episode-video": "television-episode-video";
32
32
  "conversation-file": "conversation-file";
33
33
  "work-asset": "work-asset";
34
+ "system-content": "system-content";
34
35
  "ncii-evidence": "ncii-evidence";
35
36
  }>;
36
37
  authorityVersion: z.ZodNumber;
@@ -67,6 +68,7 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
67
68
  workContent: "workContent";
68
69
  realmFile: "realmFile";
69
70
  safetyEvidence: "safetyEvidence";
71
+ systemContent: "systemContent";
70
72
  }>;
71
73
  ownerId: z.ZodString;
72
74
  scope: z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -105,6 +107,7 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
105
107
  commissionListingMedia: "commissionListingMedia";
106
108
  commissionProposalMedia: "commissionProposalMedia";
107
109
  craftSkillMedia: "craftSkillMedia";
110
+ systemVideoSlot: "systemVideoSlot";
108
111
  }>;
109
112
  publicationArgs: z.ZodUnknown;
110
113
  status: z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"media-activation-jobs.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,8BAA8B;;;;;EAKzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0D1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"media-activation-jobs.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,8BAA8B;;;;;EAKzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0D1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -33,14 +33,15 @@ export declare const MediaAssetOwnerTypeSchema: z.ZodEnum<{
33
33
  workContent: "workContent";
34
34
  realmFile: "realmFile";
35
35
  safetyEvidence: "safetyEvidence";
36
+ systemContent: "systemContent";
36
37
  }>;
37
38
  export type MediaAssetOwnerType = z.infer<typeof MediaAssetOwnerTypeSchema>;
38
39
  /** The ONE canonical stored content media kind (what the pipeline produces and the
39
40
  * asset doc records). Distinct from the 4-value display/transport MediaTypeSchema
40
41
  * (doc-schemas/social.ts, adds 'other') and media-schemas' generic MediaKindSchema. */
41
42
  export declare const ContentMediaKindSchema: z.ZodEnum<{
42
- image: "image";
43
43
  video: "video";
44
+ image: "image";
44
45
  audio: "audio";
45
46
  }>;
46
47
  export type ContentMediaKind = z.infer<typeof ContentMediaKindSchema>;
@@ -128,6 +129,7 @@ export declare const MediaOriginLineageV1Schema: z.ZodObject<{
128
129
  workContent: "workContent";
129
130
  realmFile: "realmFile";
130
131
  safetyEvidence: "safetyEvidence";
132
+ systemContent: "systemContent";
131
133
  }>>;
132
134
  createdFromOwnerId: z.ZodOptional<z.ZodString>;
133
135
  copyActorUid: z.ZodOptional<z.ZodString>;
@@ -145,6 +147,7 @@ export declare const MediaOriginLineageV1Schema: z.ZodObject<{
145
147
  workContent: "workContent";
146
148
  realmFile: "realmFile";
147
149
  safetyEvidence: "safetyEvidence";
150
+ systemContent: "systemContent";
148
151
  }>;
149
152
  currentOwnerId: z.ZodString;
150
153
  }, z.core.$strict>;
@@ -278,6 +281,7 @@ export declare const MediaPublicationKindSchema: z.ZodEnum<{
278
281
  commissionListingMedia: "commissionListingMedia";
279
282
  commissionProposalMedia: "commissionProposalMedia";
280
283
  craftSkillMedia: "craftSkillMedia";
284
+ systemVideoSlot: "systemVideoSlot";
281
285
  }>;
282
286
  export type MediaPublicationKind = z.infer<typeof MediaPublicationKindSchema>;
283
287
  /**
@@ -319,6 +323,7 @@ export declare const MediaServingAuthorityRecordSchema: z.ZodObject<{
319
323
  workContent: "workContent";
320
324
  realmFile: "realmFile";
321
325
  safetyEvidence: "safetyEvidence";
326
+ systemContent: "systemContent";
322
327
  }>;
323
328
  ownerId: z.ZodString;
324
329
  scope: z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -386,8 +391,8 @@ export type MediaAssetRetirement = z.infer<typeof MediaAssetRetirementSchema>;
386
391
  export declare const MediaAssetSchema: z.ZodObject<{
387
392
  mediaAssetId: z.ZodString;
388
393
  mediaKind: z.ZodEnum<{
389
- image: "image";
390
394
  video: "video";
395
+ image: "image";
391
396
  audio: "audio";
392
397
  }>;
393
398
  fileOrigin: z.ZodEnum<{
@@ -410,6 +415,7 @@ export declare const MediaAssetSchema: z.ZodObject<{
410
415
  "television-episode-video": "television-episode-video";
411
416
  "conversation-file": "conversation-file";
412
417
  "work-asset": "work-asset";
418
+ "system-content": "system-content";
413
419
  "ncii-evidence": "ncii-evidence";
414
420
  }>;
415
421
  ownerType: z.ZodEnum<{
@@ -426,6 +432,7 @@ export declare const MediaAssetSchema: z.ZodObject<{
426
432
  workContent: "workContent";
427
433
  realmFile: "realmFile";
428
434
  safetyEvidence: "safetyEvidence";
435
+ systemContent: "systemContent";
429
436
  }>;
430
437
  ownerId: z.ZodString;
431
438
  workProjectId: z.ZodOptional<z.ZodString>;
@@ -502,6 +509,7 @@ export declare const MediaAssetSchema: z.ZodObject<{
502
509
  workContent: "workContent";
503
510
  realmFile: "realmFile";
504
511
  safetyEvidence: "safetyEvidence";
512
+ systemContent: "systemContent";
505
513
  }>>;
506
514
  createdFromOwnerId: z.ZodOptional<z.ZodString>;
507
515
  copyActorUid: z.ZodOptional<z.ZodString>;
@@ -519,6 +527,7 @@ export declare const MediaAssetSchema: z.ZodObject<{
519
527
  workContent: "workContent";
520
528
  realmFile: "realmFile";
521
529
  safetyEvidence: "safetyEvidence";
530
+ systemContent: "systemContent";
522
531
  }>;
523
532
  currentOwnerId: z.ZodString;
524
533
  }, z.core.$strict>>;
@@ -1 +1 @@
1
- {"version":3,"file":"media-assets.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-assets.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,8 @@ export const MediaAssetOwnerTypeSchema = z.enum([
38
38
  // + `realmId` + `realmFileFolderId` on the work file's own asset).
39
39
  'realmFile',
40
40
  'safetyEvidence', // inert system sentinel — synthetic NCII-evidence assets (never an account surface)
41
+ // An admin video held by a system video slot; the owner id is the slot id.
42
+ 'systemContent',
41
43
  ]);
42
44
  // ===== Media origin lineage (Appendix A0) =====
43
45
  // One canonical lineage used by media, CSAM, and safety. Embedded on every
@@ -275,6 +277,9 @@ export const MediaPublicationKindSchema = z.enum([
275
277
  // placeholder flip) kinds. Carries the typed `guildInvite` / `adminSupport`
276
278
  // MediaServingScope of the owning conversation.
277
279
  'conversationFile',
280
+ // Points a system video slot at its new video and retires the video it replaces, in one
281
+ // transaction.
282
+ 'systemVideoSlot',
278
283
  ]);
279
284
  /**
280
285
  * The normalized serving record — the SAME contract used to generate both