@ttt-productions/ttt-core 0.19.0 → 0.19.2
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.
- package/dist/doc-schemas/chat-sync.d.ts +2 -2
- package/dist/doc-schemas/index.d.ts +19 -0
- package/dist/doc-schemas/index.d.ts.map +1 -1
- package/dist/doc-schemas/index.js +21 -0
- package/dist/doc-schemas/index.js.map +1 -1
- package/dist/doc-schemas/media-activation-jobs.d.ts +6 -6
- package/dist/doc-schemas/media-assets.d.ts +168 -14
- package/dist/doc-schemas/media-assets.d.ts.map +1 -1
- package/dist/doc-schemas/media-assets.js +60 -0
- package/dist/doc-schemas/media-assets.js.map +1 -1
- package/dist/doc-schemas/moderation.d.ts +6 -6
- package/dist/doc-schemas/ncii/allegations.d.ts +84 -0
- package/dist/doc-schemas/ncii/allegations.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/allegations.js +45 -0
- package/dist/doc-schemas/ncii/allegations.js.map +1 -0
- package/dist/doc-schemas/ncii/appeals.d.ts +121 -0
- package/dist/doc-schemas/ncii/appeals.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/appeals.js +132 -0
- package/dist/doc-schemas/ncii/appeals.js.map +1 -0
- package/dist/doc-schemas/ncii/cases.d.ts +158 -0
- package/dist/doc-schemas/ncii/cases.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/cases.js +132 -0
- package/dist/doc-schemas/ncii/cases.js.map +1 -0
- package/dist/doc-schemas/ncii/config.d.ts +131 -0
- package/dist/doc-schemas/ncii/config.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/config.js +227 -0
- package/dist/doc-schemas/ncii/config.js.map +1 -0
- package/dist/doc-schemas/ncii/holds.d.ts +84 -0
- package/dist/doc-schemas/ncii/holds.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/holds.js +63 -0
- package/dist/doc-schemas/ncii/holds.js.map +1 -0
- package/dist/doc-schemas/ncii/notices.d.ts +109 -0
- package/dist/doc-schemas/ncii/notices.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/notices.js +114 -0
- package/dist/doc-schemas/ncii/notices.js.map +1 -0
- package/dist/doc-schemas/ncii/removal.d.ts +222 -0
- package/dist/doc-schemas/ncii/removal.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/removal.js +130 -0
- package/dist/doc-schemas/ncii/removal.js.map +1 -0
- package/dist/doc-schemas/ncii/requests.d.ts +372 -0
- package/dist/doc-schemas/ncii/requests.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/requests.js +287 -0
- package/dist/doc-schemas/ncii/requests.js.map +1 -0
- package/dist/doc-schemas/ncii/scan.d.ts +59 -0
- package/dist/doc-schemas/ncii/scan.d.ts.map +1 -0
- package/dist/doc-schemas/ncii/scan.js +105 -0
- package/dist/doc-schemas/ncii/scan.js.map +1 -0
- package/dist/doc-schemas/notification-ledger.d.ts +1 -1
- package/dist/doc-schemas/payments.d.ts +2 -2
- package/dist/doc-schemas/registry.d.ts +1929 -96
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/registry.js +86 -0
- package/dist/doc-schemas/registry.js.map +1 -1
- package/dist/doc-schemas/report-docs.d.ts +3 -3
- package/dist/doc-schemas/safety/age.d.ts +178 -0
- package/dist/doc-schemas/safety/age.d.ts.map +1 -0
- package/dist/doc-schemas/safety/age.js +222 -0
- package/dist/doc-schemas/safety/age.js.map +1 -0
- package/dist/doc-schemas/safety/case-aliases.d.ts +97 -0
- package/dist/doc-schemas/safety/case-aliases.d.ts.map +1 -0
- package/dist/doc-schemas/safety/case-aliases.js +110 -0
- package/dist/doc-schemas/safety/case-aliases.js.map +1 -0
- package/dist/doc-schemas/safety/case.d.ts +542 -0
- package/dist/doc-schemas/safety/case.d.ts.map +1 -0
- package/dist/doc-schemas/safety/case.js +339 -0
- package/dist/doc-schemas/safety/case.js.map +1 -0
- package/dist/doc-schemas/safety/evidence.d.ts +346 -0
- package/dist/doc-schemas/safety/evidence.d.ts.map +1 -0
- package/dist/doc-schemas/safety/evidence.js +273 -0
- package/dist/doc-schemas/safety/evidence.js.map +1 -0
- package/dist/doc-schemas/safety/foundation.d.ts +425 -0
- package/dist/doc-schemas/safety/foundation.d.ts.map +1 -0
- package/dist/doc-schemas/safety/foundation.js +349 -0
- package/dist/doc-schemas/safety/foundation.js.map +1 -0
- package/dist/doc-schemas/safety/holds.d.ts +152 -0
- package/dist/doc-schemas/safety/holds.d.ts.map +1 -0
- package/dist/doc-schemas/safety/holds.js +142 -0
- package/dist/doc-schemas/safety/holds.js.map +1 -0
- package/dist/doc-schemas/safety/monitors.d.ts +77 -0
- package/dist/doc-schemas/safety/monitors.d.ts.map +1 -0
- package/dist/doc-schemas/safety/monitors.js +87 -0
- package/dist/doc-schemas/safety/monitors.js.map +1 -0
- package/dist/doc-schemas/safety/provenance.d.ts +70 -0
- package/dist/doc-schemas/safety/provenance.d.ts.map +1 -0
- package/dist/doc-schemas/safety/provenance.js +76 -0
- package/dist/doc-schemas/safety/provenance.js.map +1 -0
- package/dist/doc-schemas/safety/report.d.ts +256 -0
- package/dist/doc-schemas/safety/report.d.ts.map +1 -0
- package/dist/doc-schemas/safety/report.js +116 -0
- package/dist/doc-schemas/safety/report.js.map +1 -0
- package/dist/doc-schemas/safety/sagas.d.ts +154 -0
- package/dist/doc-schemas/safety/sagas.d.ts.map +1 -0
- package/dist/doc-schemas/safety/sagas.js +162 -0
- package/dist/doc-schemas/safety/sagas.js.map +1 -0
- package/dist/doc-schemas/social.d.ts +3 -3
- package/dist/doc-schemas/user.d.ts +15 -0
- package/dist/doc-schemas/user.d.ts.map +1 -1
- package/dist/doc-schemas/user.js +9 -0
- package/dist/doc-schemas/user.js.map +1 -1
- package/dist/doc-schemas/work-project.d.ts +1 -1
- package/dist/media/atoms.d.ts +2 -2
- package/dist/media/domain-events-admin.d.ts +1 -1
- package/dist/media/domain-events.d.ts +1 -1
- package/dist/media/file-origin.d.ts +1 -1
- package/dist/media/index.d.ts +1 -0
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +1 -0
- package/dist/media/index.js.map +1 -1
- package/dist/media/pending-media.d.ts +25 -25
- package/dist/media/photodna-coverage.d.ts +46 -0
- package/dist/media/photodna-coverage.d.ts.map +1 -0
- package/dist/media/photodna-coverage.js +74 -0
- package/dist/media/photodna-coverage.js.map +1 -0
- package/dist/media/start-upload.d.ts +1 -1
- package/dist/media/target-info.d.ts +1 -1
- package/dist/paths/collections.d.ts +58 -0
- package/dist/paths/collections.d.ts.map +1 -1
- package/dist/paths/collections.js +77 -0
- package/dist/paths/collections.js.map +1 -1
- package/dist/paths/path-builders.d.ts +57 -0
- package/dist/paths/path-builders.d.ts.map +1 -1
- package/dist/paths/path-builders.js +75 -0
- package/dist/paths/path-builders.js.map +1 -1
- package/dist/schemas/social.d.ts +2 -2
- package/dist/types/audit.d.ts +1 -1
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/upload-variables/square-streetz-post-variables.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Trust & Safety — durable uploader-notice delivery state machine (Appendix A
|
|
2
|
+
// §A11 [H-10]).
|
|
3
|
+
//
|
|
4
|
+
// `nciiCases/{caseId}/uploaderNotices/{noticeId}` — the uploader notice is a
|
|
5
|
+
// first-class durable delivery record like every other NCII workflow object (NOT
|
|
6
|
+
// just two bare enums). NOTE: this notices cluster OWNS the
|
|
7
|
+
// `nciiCases/{caseId}/uploaderNotices/{noticeId}` subcollection schema even though
|
|
8
|
+
// the `nciiCases` root doc itself is owned by the requests cluster.
|
|
9
|
+
//
|
|
10
|
+
// Deterministic `noticeId = sha256('ncii-uploader-notice-v1:' + caseId + ':' +
|
|
11
|
+
// recipientUid + ':' + removalGeneration)`. The client-supplied ≥128-bit
|
|
12
|
+
// `idempotencyKey` together with the deterministic noticeId guarantees one record
|
|
13
|
+
// per retry.
|
|
14
|
+
//
|
|
15
|
+
// TRANSITIONS [H-10]:
|
|
16
|
+
// pending → sent | delayed | suppressed | notApplicable
|
|
17
|
+
// delayed → sent (when `delayedUntil` elapses and no suppression applies)
|
|
18
|
+
// delayed → suppressed
|
|
19
|
+
// A failed delivery re-drives through `command` (retry/dead-letter), never silently
|
|
20
|
+
// drops. Each terminal/transition writes the matching NciiActionType
|
|
21
|
+
// (`uploaderNoticeSent` / `uploaderNoticeDelayed` / `uploaderNoticeSuppressed` /
|
|
22
|
+
// `uploaderNoticeNotApplicable`) to the request `actions` log.
|
|
23
|
+
//
|
|
24
|
+
// Every shape here is transcribed verbatim from docs/code_changes_needed/
|
|
25
|
+
// trust-and-safety/IMPLEMENTATION_PLAN.md Appendix A §A11 [H-10] — no invented
|
|
26
|
+
// values, no placeholders.
|
|
27
|
+
//
|
|
28
|
+
// SHARED enums come from ../safety/foundation.js (the single source for every
|
|
29
|
+
// cross-cluster enum); they are NEVER redefined here. This cluster IMPORTS
|
|
30
|
+
// UploaderNoticeStatusSchema + UploaderNoticeReasonSchema.
|
|
31
|
+
//
|
|
32
|
+
// Collection note: this cluster owns a NEW subcollection of the requests-cluster
|
|
33
|
+
// `nciiCases` root (+ an append-only per-attempt ledger); wiring collections.ts /
|
|
34
|
+
// path-builders.ts / registry.ts is deferred to the app leg (the orchestrator
|
|
35
|
+
// binds the schemas + path builders there); the deterministic doc-id shape is
|
|
36
|
+
// documented on each schema below.
|
|
37
|
+
import { z } from 'zod';
|
|
38
|
+
import { UploaderNoticeStatusSchema, UploaderNoticeReasonSchema, } from '../safety/foundation.js';
|
|
39
|
+
// ===========================================================================
|
|
40
|
+
// §A11 [H-10] — delivery channel + embedded shapes
|
|
41
|
+
// ===========================================================================
|
|
42
|
+
/** Notice delivery channel. */
|
|
43
|
+
export const NciiUploaderNoticeChannelSchema = z.enum(['inApp', 'email']);
|
|
44
|
+
/** Who the notice is for, snapshotted at decision time (NEVER re-resolved). */
|
|
45
|
+
export const NciiUploaderNoticeRecipientSnapshotSchema = z.object({
|
|
46
|
+
uid: z.string().min(1),
|
|
47
|
+
deliveryAddressRef: z.string().min(1),
|
|
48
|
+
capturedAt: z.number(),
|
|
49
|
+
}).strict();
|
|
50
|
+
/** Durable retry/dead-letter delivery command on the notice. */
|
|
51
|
+
export const NciiUploaderNoticeCommandV1Schema = z.object({
|
|
52
|
+
commandId: z.string().min(1),
|
|
53
|
+
attemptCount: z.number(),
|
|
54
|
+
nextAttemptAt: z.number().optional(),
|
|
55
|
+
leaseOwner: z.string().min(1).optional(),
|
|
56
|
+
leaseExpiresAt: z.number().optional(),
|
|
57
|
+
lastErrorCode: z.string().optional(),
|
|
58
|
+
}).strict();
|
|
59
|
+
// ===========================================================================
|
|
60
|
+
// §A11 [H-10] — nciiCases/{caseId}/uploaderNotices/{noticeId}
|
|
61
|
+
// ===========================================================================
|
|
62
|
+
/** `nciiCases/{caseId}/uploaderNotices/{noticeId}` — durable uploader-notice
|
|
63
|
+
* delivery record (OWNED by the notices cluster). Doc id `noticeId` is
|
|
64
|
+
* deterministic:
|
|
65
|
+
* `sha256('ncii-uploader-notice-v1:' + caseId + ':' + recipientUid + ':' + removalGeneration)`. */
|
|
66
|
+
export const NciiUploaderNoticeV1Schema = z.object({
|
|
67
|
+
schemaVersion: z.literal(1),
|
|
68
|
+
noticeId: z.string().min(1),
|
|
69
|
+
caseId: z.string().min(1),
|
|
70
|
+
requestIds: z.array(z.string().min(1)).max(16),
|
|
71
|
+
removalGeneration: z.number(),
|
|
72
|
+
// who, snapshotted at decision time (never re-resolved)
|
|
73
|
+
recipientSnapshot: NciiUploaderNoticeRecipientSnapshotSchema,
|
|
74
|
+
channel: NciiUploaderNoticeChannelSchema,
|
|
75
|
+
// the notice template + version actually used
|
|
76
|
+
templateId: z.string().min(1),
|
|
77
|
+
templateVersion: z.number(),
|
|
78
|
+
// 'pending'|'sent'|'delayed'|'suppressed'|'notApplicable'
|
|
79
|
+
status: UploaderNoticeStatusSchema,
|
|
80
|
+
// present ONLY when status='suppressed' (+ restricted rationale via rationaleRef + reviewer identity)
|
|
81
|
+
suppressionReason: UploaderNoticeReasonSchema.optional(),
|
|
82
|
+
// suppression/delay rationale (restricted) + reviewer identity
|
|
83
|
+
rationaleRef: z.string().min(1).optional(),
|
|
84
|
+
decidedByUid: z.string().min(1).optional(),
|
|
85
|
+
// when status='delayed' — the scheduled re-evaluation time (delayed → sent transition)
|
|
86
|
+
delayedUntil: z.number().optional(),
|
|
87
|
+
// ≥128-bit; with the deterministic noticeId guarantees one record per retry
|
|
88
|
+
idempotencyKey: z.string().min(1),
|
|
89
|
+
// durable retry/dead-letter delivery command
|
|
90
|
+
command: NciiUploaderNoticeCommandV1Schema,
|
|
91
|
+
// proof of delivery (provider receipt / read marker), when available
|
|
92
|
+
verifiedDeliveredAt: z.number().optional(),
|
|
93
|
+
createdAt: z.number(),
|
|
94
|
+
updatedAt: z.number(),
|
|
95
|
+
}).strict();
|
|
96
|
+
// ===========================================================================
|
|
97
|
+
// §A11 [H-10] — nciiCases/{caseId}/uploaderNotices/{noticeId}/attempts/{attemptId}
|
|
98
|
+
// IMMUTABLE append-only per-attempt ledger.
|
|
99
|
+
// ===========================================================================
|
|
100
|
+
/** Per-attempt delivery result. */
|
|
101
|
+
export const NciiUploaderNoticeAttemptResultSchema = z.enum(['queued', 'sent', 'failed', 'deferred']);
|
|
102
|
+
/** `nciiCases/{caseId}/uploaderNotices/{noticeId}/attempts/{attemptId}` —
|
|
103
|
+
* IMMUTABLE append-only per-attempt ledger. Doc id `attemptId` is a
|
|
104
|
+
* deterministic/assigned id (z.string().min(1)). */
|
|
105
|
+
export const NciiUploaderNoticeAttemptV1Schema = z.object({
|
|
106
|
+
schemaVersion: z.literal(1),
|
|
107
|
+
attemptId: z.string().min(1),
|
|
108
|
+
at: z.number(),
|
|
109
|
+
channel: NciiUploaderNoticeChannelSchema,
|
|
110
|
+
result: NciiUploaderNoticeAttemptResultSchema,
|
|
111
|
+
providerRef: z.string().min(1).optional(),
|
|
112
|
+
errorCode: z.string().optional(),
|
|
113
|
+
}).strict();
|
|
114
|
+
//# sourceMappingURL=notices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notices.js","sourceRoot":"","sources":["../../../src/doc-schemas/ncii/notices.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** The removal saga phase progression. `denyServing` precedes
|
|
3
|
+
* `removeOrTombstone`; `verifyRemoval` precedes `complete`. */
|
|
4
|
+
export declare const NciiRemovalPhaseSchema: z.ZodEnum<{
|
|
5
|
+
complete: "complete";
|
|
6
|
+
resolveTargets: "resolveTargets";
|
|
7
|
+
discoverKnownCopies: "discoverKnownCopies";
|
|
8
|
+
denyServing: "denyServing";
|
|
9
|
+
removeOrTombstone: "removeOrTombstone";
|
|
10
|
+
writeHashBlocks: "writeHashBlocks";
|
|
11
|
+
verifyRemoval: "verifyRemoval";
|
|
12
|
+
}>;
|
|
13
|
+
export type NciiRemovalPhase = z.infer<typeof NciiRemovalPhaseSchema>;
|
|
14
|
+
/** Top-level durable run status of the removal job. */
|
|
15
|
+
export declare const NciiRemovalStatusSchema: z.ZodEnum<{
|
|
16
|
+
pending: "pending";
|
|
17
|
+
completed: "completed";
|
|
18
|
+
retryableFailure: "retryableFailure";
|
|
19
|
+
deadLetter: "deadLetter";
|
|
20
|
+
running: "running";
|
|
21
|
+
}>;
|
|
22
|
+
export type NciiRemovalStatus = z.infer<typeof NciiRemovalStatusSchema>;
|
|
23
|
+
/** Typed resumable discovery cursor. `phase` mirrors the job phase enum;
|
|
24
|
+
* `lastSurface` is the cross-cluster NciiTargetSurface. */
|
|
25
|
+
export declare const NciiDiscoveryCursorV1Schema: z.ZodObject<{
|
|
26
|
+
phase: z.ZodEnum<{
|
|
27
|
+
complete: "complete";
|
|
28
|
+
resolveTargets: "resolveTargets";
|
|
29
|
+
discoverKnownCopies: "discoverKnownCopies";
|
|
30
|
+
denyServing: "denyServing";
|
|
31
|
+
removeOrTombstone: "removeOrTombstone";
|
|
32
|
+
writeHashBlocks: "writeHashBlocks";
|
|
33
|
+
verifyRemoval: "verifyRemoval";
|
|
34
|
+
}>;
|
|
35
|
+
lastSurface: z.ZodEnum<{
|
|
36
|
+
chatAttachment: "chatAttachment";
|
|
37
|
+
original: "original";
|
|
38
|
+
hallCopy: "hallCopy";
|
|
39
|
+
profileMedia: "profileMedia";
|
|
40
|
+
variant: "variant";
|
|
41
|
+
cacheServing: "cacheServing";
|
|
42
|
+
exactHashMatch: "exactHashMatch";
|
|
43
|
+
}>;
|
|
44
|
+
lastCursorToken: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$strict>;
|
|
46
|
+
export type NciiDiscoveryCursorV1 = z.infer<typeof NciiDiscoveryCursorV1Schema>;
|
|
47
|
+
/** `nciiRemovalJobs/{jobId}` — REQUEST-scoped durable removal saga. Doc id
|
|
48
|
+
* `jobId` is deterministic:
|
|
49
|
+
* `sha256('ncii-removal-v1:' + requestId + ':' + caseId + ':' + generation)`
|
|
50
|
+
* (racing workers create the same job). */
|
|
51
|
+
export declare const NciiRemovalJobV1Schema: z.ZodObject<{
|
|
52
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
53
|
+
jobId: z.ZodString;
|
|
54
|
+
caseId: z.ZodString;
|
|
55
|
+
requestId: z.ZodString;
|
|
56
|
+
generation: z.ZodNumber;
|
|
57
|
+
phase: z.ZodEnum<{
|
|
58
|
+
complete: "complete";
|
|
59
|
+
resolveTargets: "resolveTargets";
|
|
60
|
+
discoverKnownCopies: "discoverKnownCopies";
|
|
61
|
+
denyServing: "denyServing";
|
|
62
|
+
removeOrTombstone: "removeOrTombstone";
|
|
63
|
+
writeHashBlocks: "writeHashBlocks";
|
|
64
|
+
verifyRemoval: "verifyRemoval";
|
|
65
|
+
}>;
|
|
66
|
+
status: z.ZodEnum<{
|
|
67
|
+
pending: "pending";
|
|
68
|
+
completed: "completed";
|
|
69
|
+
retryableFailure: "retryableFailure";
|
|
70
|
+
deadLetter: "deadLetter";
|
|
71
|
+
running: "running";
|
|
72
|
+
}>;
|
|
73
|
+
cursor: z.ZodOptional<z.ZodObject<{
|
|
74
|
+
phase: z.ZodEnum<{
|
|
75
|
+
complete: "complete";
|
|
76
|
+
resolveTargets: "resolveTargets";
|
|
77
|
+
discoverKnownCopies: "discoverKnownCopies";
|
|
78
|
+
denyServing: "denyServing";
|
|
79
|
+
removeOrTombstone: "removeOrTombstone";
|
|
80
|
+
writeHashBlocks: "writeHashBlocks";
|
|
81
|
+
verifyRemoval: "verifyRemoval";
|
|
82
|
+
}>;
|
|
83
|
+
lastSurface: z.ZodEnum<{
|
|
84
|
+
chatAttachment: "chatAttachment";
|
|
85
|
+
original: "original";
|
|
86
|
+
hallCopy: "hallCopy";
|
|
87
|
+
profileMedia: "profileMedia";
|
|
88
|
+
variant: "variant";
|
|
89
|
+
cacheServing: "cacheServing";
|
|
90
|
+
exactHashMatch: "exactHashMatch";
|
|
91
|
+
}>;
|
|
92
|
+
lastCursorToken: z.ZodOptional<z.ZodString>;
|
|
93
|
+
}, z.core.$strict>>;
|
|
94
|
+
leaseOwner: z.ZodOptional<z.ZodString>;
|
|
95
|
+
leaseExpiresAt: z.ZodOptional<z.ZodNumber>;
|
|
96
|
+
attemptCount: z.ZodNumber;
|
|
97
|
+
nextAttemptAt: z.ZodOptional<z.ZodNumber>;
|
|
98
|
+
lastErrorCode: z.ZodOptional<z.ZodString>;
|
|
99
|
+
createdAt: z.ZodNumber;
|
|
100
|
+
updatedAt: z.ZodNumber;
|
|
101
|
+
completedAt: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
deadLetterAt: z.ZodOptional<z.ZodNumber>;
|
|
103
|
+
}, z.core.$strict>;
|
|
104
|
+
export type NciiRemovalJobV1 = z.infer<typeof NciiRemovalJobV1Schema>;
|
|
105
|
+
/** Serving-deny sub-state. */
|
|
106
|
+
export declare const NciiTargetServingDenyStateSchema: z.ZodEnum<{
|
|
107
|
+
pending: "pending";
|
|
108
|
+
failed: "failed";
|
|
109
|
+
denied: "denied";
|
|
110
|
+
}>;
|
|
111
|
+
export type NciiTargetServingDenyState = z.infer<typeof NciiTargetServingDenyStateSchema>;
|
|
112
|
+
/** Removal sub-state. */
|
|
113
|
+
export declare const NciiTargetRemovalStateSchema: z.ZodEnum<{
|
|
114
|
+
pending: "pending";
|
|
115
|
+
failed: "failed";
|
|
116
|
+
removed: "removed";
|
|
117
|
+
tombstoned: "tombstoned";
|
|
118
|
+
}>;
|
|
119
|
+
export type NciiTargetRemovalState = z.infer<typeof NciiTargetRemovalStateSchema>;
|
|
120
|
+
/** Verification sub-state. */
|
|
121
|
+
export declare const NciiTargetVerificationStateSchema: z.ZodEnum<{
|
|
122
|
+
pending: "pending";
|
|
123
|
+
verifiedGone: "verifiedGone";
|
|
124
|
+
leftover: "leftover";
|
|
125
|
+
}>;
|
|
126
|
+
export type NciiTargetVerificationState = z.infer<typeof NciiTargetVerificationStateSchema>;
|
|
127
|
+
/** `nciiRemovalJobs/{jobId}/targets/{targetKeyHash}` — per-target removal row.
|
|
128
|
+
* Doc id `targetKeyHash` is the deterministic id from the canonical locator.
|
|
129
|
+
* Per-target transitions: `servingDeny (pending→denied | failed)`;
|
|
130
|
+
* `removal (pending→removed | tombstoned | failed)`;
|
|
131
|
+
* `verification (pending→verifiedGone | leftover)`. */
|
|
132
|
+
export declare const NciiRemovalTargetV1Schema: z.ZodObject<{
|
|
133
|
+
targetKeyHash: z.ZodString;
|
|
134
|
+
locator: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
135
|
+
kind: z.ZodLiteral<"mediaAsset">;
|
|
136
|
+
mediaAssetId: z.ZodString;
|
|
137
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
138
|
+
kind: z.ZodLiteral<"hallItem">;
|
|
139
|
+
hallItemId: z.ZodString;
|
|
140
|
+
subItemId: z.ZodOptional<z.ZodString>;
|
|
141
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
142
|
+
kind: z.ZodLiteral<"squarePost">;
|
|
143
|
+
postId: z.ZodString;
|
|
144
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
145
|
+
kind: z.ZodLiteral<"profileImage">;
|
|
146
|
+
profileUid: z.ZodString;
|
|
147
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
148
|
+
kind: z.ZodLiteral<"username">;
|
|
149
|
+
profileUid: z.ZodString;
|
|
150
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
151
|
+
kind: z.ZodLiteral<"craftSkill">;
|
|
152
|
+
profileUid: z.ZodString;
|
|
153
|
+
craftSkillId: z.ZodString;
|
|
154
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
155
|
+
kind: z.ZodLiteral<"commissionListing">;
|
|
156
|
+
commissionListingId: z.ZodString;
|
|
157
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
158
|
+
kind: z.ZodLiteral<"audition">;
|
|
159
|
+
auditionId: z.ZodString;
|
|
160
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
161
|
+
kind: z.ZodLiteral<"auditionEntry">;
|
|
162
|
+
auditionId: z.ZodString;
|
|
163
|
+
auditionEntryId: z.ZodString;
|
|
164
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
165
|
+
kind: z.ZodLiteral<"guildInviteMessage">;
|
|
166
|
+
channelId: z.ZodString;
|
|
167
|
+
messageId: z.ZodString;
|
|
168
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
169
|
+
kind: z.ZodLiteral<"chatAttachment">;
|
|
170
|
+
channelId: z.ZodString;
|
|
171
|
+
messageId: z.ZodString;
|
|
172
|
+
attachmentId: z.ZodString;
|
|
173
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
174
|
+
kind: z.ZodLiteral<"url">;
|
|
175
|
+
url: z.ZodString;
|
|
176
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
177
|
+
kind: z.ZodLiteral<"additionalText">;
|
|
178
|
+
textRef: z.ZodString;
|
|
179
|
+
}, z.core.$strict>], "kind">;
|
|
180
|
+
surface: z.ZodEnum<{
|
|
181
|
+
chatAttachment: "chatAttachment";
|
|
182
|
+
original: "original";
|
|
183
|
+
hallCopy: "hallCopy";
|
|
184
|
+
profileMedia: "profileMedia";
|
|
185
|
+
variant: "variant";
|
|
186
|
+
cacheServing: "cacheServing";
|
|
187
|
+
exactHashMatch: "exactHashMatch";
|
|
188
|
+
}>;
|
|
189
|
+
expectedGeneration: z.ZodOptional<z.ZodNumber>;
|
|
190
|
+
servingDenyState: z.ZodEnum<{
|
|
191
|
+
pending: "pending";
|
|
192
|
+
failed: "failed";
|
|
193
|
+
denied: "denied";
|
|
194
|
+
}>;
|
|
195
|
+
removalState: z.ZodEnum<{
|
|
196
|
+
pending: "pending";
|
|
197
|
+
failed: "failed";
|
|
198
|
+
removed: "removed";
|
|
199
|
+
tombstoned: "tombstoned";
|
|
200
|
+
}>;
|
|
201
|
+
verificationState: z.ZodEnum<{
|
|
202
|
+
pending: "pending";
|
|
203
|
+
verifiedGone: "verifiedGone";
|
|
204
|
+
leftover: "leftover";
|
|
205
|
+
}>;
|
|
206
|
+
outcome: z.ZodEnum<{
|
|
207
|
+
pending: "pending";
|
|
208
|
+
unableToComplete: "unableToComplete";
|
|
209
|
+
removed: "removed";
|
|
210
|
+
tombstoned: "tombstoned";
|
|
211
|
+
verifiedGone: "verifiedGone";
|
|
212
|
+
leftoverRetrying: "leftoverRetrying";
|
|
213
|
+
terminalException: "terminalException";
|
|
214
|
+
}>;
|
|
215
|
+
attemptCount: z.ZodNumber;
|
|
216
|
+
leaseOwner: z.ZodOptional<z.ZodString>;
|
|
217
|
+
leaseExpiresAt: z.ZodOptional<z.ZodNumber>;
|
|
218
|
+
lastErrorCode: z.ZodOptional<z.ZodString>;
|
|
219
|
+
updatedAt: z.ZodNumber;
|
|
220
|
+
}, z.core.$strict>;
|
|
221
|
+
export type NciiRemovalTargetV1 = z.infer<typeof NciiRemovalTargetV1Schema>;
|
|
222
|
+
//# sourceMappingURL=removal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal.d.ts","sourceRoot":"","sources":["../../../src/doc-schemas/ncii/removal.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB;+DAC+D;AAC/D,eAAO,MAAM,sBAAsB;;;;;;;;EAQjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,uBAAuB;;;;;;EAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAOxE;2DAC2D;AAC3D,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;kBAI7B,CAAC;AACZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAQhF;;;2CAG2C;AAC3C,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoBxB,CAAC;AACZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAQtE,8BAA8B;AAC9B,eAAO,MAAM,gCAAgC;;;;EAA0C,CAAC;AACxF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,yBAAyB;AACzB,eAAO,MAAM,4BAA4B;;;;;EAAyD,CAAC;AACnG,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,8BAA8B;AAC9B,eAAO,MAAM,iCAAiC;;;;EAAkD,CAAC;AACjG,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE5F;;;;uDAIuD;AACvD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAe3B,CAAC;AACZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// Trust & Safety — NCII per-request removal deadline + durable removal saga
|
|
2
|
+
// (Appendix A §A11 [H4]).
|
|
3
|
+
//
|
|
4
|
+
// The removal job is REQUEST-scoped, not case-scoped: the deadline monitor lives
|
|
5
|
+
// at `safetySlaMonitors/{requestId}__nciiRemovalDeadline` and a monitor can never
|
|
6
|
+
// be resolved by finishing a DIFFERENT linked request. The case-level
|
|
7
|
+
// `nciiRemovalDeadlineAt` MAY mirror the minimum active deadline but is NOT the
|
|
8
|
+
// source of truth.
|
|
9
|
+
//
|
|
10
|
+
// COMPLETION PREDICATE [H4]: completion is derived ONLY from verified target rows
|
|
11
|
+
// + approved legal outcomes — a request is `completed` ONLY when the reported
|
|
12
|
+
// target AND every known identical copy reaches `verificationState='verifiedGone'`
|
|
13
|
+
// OR carries an approved `NciiTerminalException`. A partial technical failure is
|
|
14
|
+
// the HONEST outcome `unableToComplete` (technical) or
|
|
15
|
+
// `completedWithApprovedException` (counsel-approved) — NEVER ordinary `completed`.
|
|
16
|
+
// A worker crash resumes idempotently (replay is idempotent by `targetKeyHash` +
|
|
17
|
+
// the job's deterministic `jobId`); a `leftover`/`failed` target re-drives from
|
|
18
|
+
// its last unverified sub-state.
|
|
19
|
+
//
|
|
20
|
+
// Every shape here is transcribed verbatim from docs/code_changes_needed/
|
|
21
|
+
// trust-and-safety/IMPLEMENTATION_PLAN.md Appendix A §A11 [H4] — no invented
|
|
22
|
+
// values, no placeholders.
|
|
23
|
+
//
|
|
24
|
+
// SHARED enums + the locator come from ../safety/foundation.js (the single source
|
|
25
|
+
// for every cross-cluster enum); they are NEVER redefined here. This cluster
|
|
26
|
+
// IMPORTS NciiTargetSurfaceSchema, NciiTargetOutcomeSchema, and TargetLocatorV1Schema.
|
|
27
|
+
//
|
|
28
|
+
// Collection note: this cluster introduces NEW Firestore collections (+ one child
|
|
29
|
+
// subcollection under `nciiRemovalJobs`); wiring collections.ts / path-builders.ts
|
|
30
|
+
// / registry.ts is deferred to the app leg (the orchestrator binds the schemas +
|
|
31
|
+
// path builders there); the deterministic doc-id shapes are documented on each
|
|
32
|
+
// schema below.
|
|
33
|
+
import { z } from 'zod';
|
|
34
|
+
import { NciiTargetSurfaceSchema, NciiTargetOutcomeSchema, TargetLocatorV1Schema, } from '../safety/foundation.js';
|
|
35
|
+
// ===========================================================================
|
|
36
|
+
// §A11 [H4] — phase / status vocabularies for the removal saga
|
|
37
|
+
// ===========================================================================
|
|
38
|
+
/** The removal saga phase progression. `denyServing` precedes
|
|
39
|
+
* `removeOrTombstone`; `verifyRemoval` precedes `complete`. */
|
|
40
|
+
export const NciiRemovalPhaseSchema = z.enum([
|
|
41
|
+
'resolveTargets',
|
|
42
|
+
'discoverKnownCopies',
|
|
43
|
+
'denyServing',
|
|
44
|
+
'removeOrTombstone',
|
|
45
|
+
'writeHashBlocks',
|
|
46
|
+
'verifyRemoval',
|
|
47
|
+
'complete',
|
|
48
|
+
]);
|
|
49
|
+
/** Top-level durable run status of the removal job. */
|
|
50
|
+
export const NciiRemovalStatusSchema = z.enum([
|
|
51
|
+
'pending',
|
|
52
|
+
'running',
|
|
53
|
+
'retryableFailure',
|
|
54
|
+
'deadLetter',
|
|
55
|
+
'completed',
|
|
56
|
+
]);
|
|
57
|
+
// ===========================================================================
|
|
58
|
+
// §A11 [H4] — NciiDiscoveryCursorV1 (typed resumable discovery cursor — never an
|
|
59
|
+
// untyped blob). Embedded on NciiRemovalJobV1.cursor.
|
|
60
|
+
// ===========================================================================
|
|
61
|
+
/** Typed resumable discovery cursor. `phase` mirrors the job phase enum;
|
|
62
|
+
* `lastSurface` is the cross-cluster NciiTargetSurface. */
|
|
63
|
+
export const NciiDiscoveryCursorV1Schema = z.object({
|
|
64
|
+
phase: NciiRemovalPhaseSchema,
|
|
65
|
+
lastSurface: NciiTargetSurfaceSchema,
|
|
66
|
+
lastCursorToken: z.string().min(1).optional(),
|
|
67
|
+
}).strict();
|
|
68
|
+
// ===========================================================================
|
|
69
|
+
// §A11 [H4] — nciiRemovalJobs/{jobId}
|
|
70
|
+
// Deterministic `jobId = sha256('ncii-removal-v1:' + requestId + ':' + caseId +
|
|
71
|
+
// ':' + generation)` (racing workers create the SAME job — idempotent).
|
|
72
|
+
// ===========================================================================
|
|
73
|
+
/** `nciiRemovalJobs/{jobId}` — REQUEST-scoped durable removal saga. Doc id
|
|
74
|
+
* `jobId` is deterministic:
|
|
75
|
+
* `sha256('ncii-removal-v1:' + requestId + ':' + caseId + ':' + generation)`
|
|
76
|
+
* (racing workers create the same job). */
|
|
77
|
+
export const NciiRemovalJobV1Schema = z.object({
|
|
78
|
+
schemaVersion: z.literal(1),
|
|
79
|
+
// = sha256('ncii-removal-v1:' + requestId + ':' + caseId + ':' + generation)
|
|
80
|
+
jobId: z.string().min(1),
|
|
81
|
+
caseId: z.string().min(1),
|
|
82
|
+
requestId: z.string().min(1),
|
|
83
|
+
generation: z.number(),
|
|
84
|
+
phase: NciiRemovalPhaseSchema,
|
|
85
|
+
status: NciiRemovalStatusSchema,
|
|
86
|
+
// typed resumable discovery cursor — never an untyped blob
|
|
87
|
+
cursor: NciiDiscoveryCursorV1Schema.optional(),
|
|
88
|
+
leaseOwner: z.string().min(1).optional(),
|
|
89
|
+
leaseExpiresAt: z.number().optional(),
|
|
90
|
+
attemptCount: z.number(),
|
|
91
|
+
nextAttemptAt: z.number().optional(),
|
|
92
|
+
lastErrorCode: z.string().optional(),
|
|
93
|
+
createdAt: z.number(),
|
|
94
|
+
updatedAt: z.number(),
|
|
95
|
+
completedAt: z.number().optional(),
|
|
96
|
+
deadLetterAt: z.number().optional(),
|
|
97
|
+
}).strict();
|
|
98
|
+
// ===========================================================================
|
|
99
|
+
// §A11 [H4] — nciiRemovalJobs/{jobId}/targets/{targetKeyHash}
|
|
100
|
+
// Per-target child row. `targetKeyHash` is the deterministic id derived from the
|
|
101
|
+
// canonical locator. Per-target transitions are independent sub-state machines.
|
|
102
|
+
// ===========================================================================
|
|
103
|
+
/** Serving-deny sub-state. */
|
|
104
|
+
export const NciiTargetServingDenyStateSchema = z.enum(['pending', 'denied', 'failed']);
|
|
105
|
+
/** Removal sub-state. */
|
|
106
|
+
export const NciiTargetRemovalStateSchema = z.enum(['pending', 'removed', 'tombstoned', 'failed']);
|
|
107
|
+
/** Verification sub-state. */
|
|
108
|
+
export const NciiTargetVerificationStateSchema = z.enum(['pending', 'verifiedGone', 'leftover']);
|
|
109
|
+
/** `nciiRemovalJobs/{jobId}/targets/{targetKeyHash}` — per-target removal row.
|
|
110
|
+
* Doc id `targetKeyHash` is the deterministic id from the canonical locator.
|
|
111
|
+
* Per-target transitions: `servingDeny (pending→denied | failed)`;
|
|
112
|
+
* `removal (pending→removed | tombstoned | failed)`;
|
|
113
|
+
* `verification (pending→verifiedGone | leftover)`. */
|
|
114
|
+
export const NciiRemovalTargetV1Schema = z.object({
|
|
115
|
+
// deterministic id from the canonical locator
|
|
116
|
+
targetKeyHash: z.string().min(1),
|
|
117
|
+
locator: TargetLocatorV1Schema,
|
|
118
|
+
surface: NciiTargetSurfaceSchema,
|
|
119
|
+
expectedGeneration: z.number().optional(),
|
|
120
|
+
servingDenyState: NciiTargetServingDenyStateSchema,
|
|
121
|
+
removalState: NciiTargetRemovalStateSchema,
|
|
122
|
+
verificationState: NciiTargetVerificationStateSchema,
|
|
123
|
+
outcome: NciiTargetOutcomeSchema,
|
|
124
|
+
attemptCount: z.number(),
|
|
125
|
+
leaseOwner: z.string().min(1).optional(),
|
|
126
|
+
leaseExpiresAt: z.number().optional(),
|
|
127
|
+
lastErrorCode: z.string().optional(),
|
|
128
|
+
updatedAt: z.number(),
|
|
129
|
+
}).strict();
|
|
130
|
+
//# sourceMappingURL=removal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal.js","sourceRoot":"","sources":["../../../src/doc-schemas/ncii/removal.ts"],"names":[],"mappings":"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"}
|