@@ -165,6 +165,12 @@ export interface PromoteForkResult {
165165 * until a redeploy. Surfaced (rather than swallowed) so the caller can warn.
166166 */
167167 deployFailed : number
168+ /**
169+ * Deploys that succeeded but left something pending - a cutover still activating, a side
170+ * effect still queued - as `<workflow> — <warning>`. The target is not yet running what the
171+ * sync wrote, so the sync's Activity row must not read as clean.
172+ */
173+ deployWarnings : string [ ]
168174 unmappedRequired : Array < Pick < ForkReference , 'kind' | 'sourceId' | 'required' | 'blockName' > >
169175 /**
170176 * References the sync would have cleared in the target, so it was blocked without writing
@@ -225,6 +231,7 @@ function buildSyncActivity(
225231 const { direction, sourceWorkspaceId, targetWorkspaceId, otherWorkspaceName, actorName } = params
226232 const warnings =
227233 result . deployFailed > 0 ||
234+ result . deployWarnings . length > 0 ||
228235 result . needsConfiguration . length > 0 ||
229236 result . clearedOptional . length > 0 ||
230237 result . droppedReferences . length > 0 ||
@@ -246,6 +253,7 @@ function buildSyncActivity(
246253 archived : result . archived ,
247254 redeployed : result . redeployed ,
248255 deployFailed : result . deployFailed ,
256+ deployWarnings : result . deployWarnings ,
249257 updatedNames : result . updatedNames ,
250258 createdNames : result . createdNames ,
251259 archivedNames : result . archivedNames ,
@@ -1059,6 +1067,7 @@ export async function promoteFork(params: PromoteForkParams): Promise<PromoteFor
10591067 archived : 0 ,
10601068 redeployed : 0 ,
10611069 deployFailed : 0 ,
1070+ deployWarnings : [ ] ,
10621071 unmappedRequired : txResult . blocked === 'unmapped' ? txResult . unmappedRequired : [ ] ,
10631072 blockers : txResult . blocked === 'cleared-refs' ? txResult . blockers : [ ] ,
10641073 blocked : txResult . blocked ,
@@ -1117,7 +1126,7 @@ export async function promoteFork(params: PromoteForkParams): Promise<PromoteFor
11171126 // sync). Surface those instead of swallowing them into a clean success.
11181127 if ( result . warnings ?. length ) {
11191128 const name = txResult . writtenNames [ targetWorkflowId ] ?? targetWorkflowId
1120- for ( const warning of result . warnings ) deployWarnings . push ( `${ name } : ${ warning } ` )
1129+ for ( const warning of result . warnings ) deployWarnings . push ( `${ name } — ${ warning } ` )
11211130 }
11221131 } else {
11231132 deployFailures . push ( targetWorkflowId )
@@ -1142,6 +1151,7 @@ export async function promoteFork(params: PromoteForkParams): Promise<PromoteFor
11421151 archived : txResult . archived ,
11431152 redeployed,
11441153 deployFailed : deployFailures . length ,
1154+ deployWarnings,
11451155 unmappedRequired : [ ] ,
11461156 blockers : [ ] ,
11471157 blocked : null ,
@@ -1197,6 +1207,8 @@ export async function promoteFork(params: PromoteForkParams): Promise<PromoteFor
11971207 tables : contentFill . contentPlan . tables . length ,
11981208 knowledgeBases : contentFill . contentPlan . knowledgeBases . length ,
11991209 files : contentFill . blobTasks . length ,
1210+ skills : contentFill . contentPlan . skills . length ,
1211+ documents : contentFill . contentPlan . documents . length ,
12001212 } ,
12011213 } )
12021214 } else {
0 commit comments