hikoutei 0.3.2 → 0.3.3

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 (211) hide show
  1. package/README.md +12 -2
  2. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts +2 -0
  3. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -1
  4. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +5 -0
  5. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
  6. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +52 -0
  7. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
  8. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +195 -13
  9. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
  10. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts +24 -0
  11. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts.map +1 -0
  12. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js +124 -0
  13. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js.map +1 -0
  14. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +1 -1
  15. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -1
  16. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +15 -2
  17. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts.map +1 -1
  18. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +27 -3
  19. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -1
  20. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +1 -0
  21. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +1 -1
  22. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +1 -0
  23. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +1 -1
  24. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +2 -0
  25. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +1 -1
  26. package/dist/adapter/sheets/providers/apps-script-gateway/index.js +1 -0
  27. package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +1 -1
  28. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +3 -1
  29. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -1
  30. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +9 -0
  31. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -1
  32. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -1
  33. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +137 -20
  34. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -1
  35. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +82 -34
  36. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -1
  37. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts +31 -0
  38. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts.map +1 -0
  39. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js +567 -0
  40. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js.map +1 -0
  41. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +12 -17
  42. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -1
  43. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +27 -213
  44. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -1
  45. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -1
  46. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +81 -8
  47. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -1
  48. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +1 -6
  49. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -1
  50. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +15 -9
  51. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -1
  52. package/dist/application/orm/mapping/projection.js +1 -1
  53. package/dist/application/orm/mapping/projection.js.map +1 -1
  54. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
  55. package/dist/application/orm/persistence/flush/flushCoordinator.js +1 -0
  56. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
  57. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +1 -1
  58. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -1
  59. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts +3 -1
  60. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +1 -1
  61. package/dist/application/sync/gateway/SyncGatewayBootstrap.js +3 -1
  62. package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +1 -1
  63. package/dist/application/sync/gateway/conflictProjection.d.ts +13 -0
  64. package/dist/application/sync/gateway/conflictProjection.d.ts.map +1 -0
  65. package/dist/application/sync/gateway/conflictProjection.js +58 -0
  66. package/dist/application/sync/gateway/conflictProjection.js.map +1 -0
  67. package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts +11 -0
  68. package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts.map +1 -0
  69. package/dist/application/sync/gateway/conflictProjectionRegistration.js +70 -0
  70. package/dist/application/sync/gateway/conflictProjectionRegistration.js.map +1 -0
  71. package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts +102 -0
  72. package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts.map +1 -0
  73. package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js +221 -0
  74. package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js.map +1 -0
  75. package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts +51 -0
  76. package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts.map +1 -0
  77. package/dist/application/sync/gateway/coordinator/asyncMutex.js +65 -0
  78. package/dist/application/sync/gateway/coordinator/asyncMutex.js.map +1 -0
  79. package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts +31 -0
  80. package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts.map +1 -0
  81. package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js +13 -0
  82. package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js.map +1 -0
  83. package/dist/application/sync/gateway/syncGateway.d.ts +26 -6
  84. package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -1
  85. package/dist/application/sync/gateway/syncGateway.js +10 -2
  86. package/dist/application/sync/gateway/syncGateway.js.map +1 -1
  87. package/dist/application/sync/gateway/transportClassification.d.ts +62 -0
  88. package/dist/application/sync/gateway/transportClassification.d.ts.map +1 -0
  89. package/dist/application/sync/gateway/transportClassification.js +133 -0
  90. package/dist/application/sync/gateway/transportClassification.js.map +1 -0
  91. package/dist/application/sync/inbound/autoSystemConflictResolution.d.ts +26 -0
  92. package/dist/application/sync/inbound/autoSystemConflictResolution.d.ts.map +1 -0
  93. package/dist/application/sync/inbound/autoSystemConflictResolution.js +335 -0
  94. package/dist/application/sync/inbound/autoSystemConflictResolution.js.map +1 -0
  95. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts +50 -0
  96. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +1 -0
  97. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +97 -0
  98. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js.map +1 -0
  99. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +4 -1
  100. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -1
  101. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +35 -1
  102. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
  103. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +14 -2
  104. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
  105. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +190 -31
  106. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
  107. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +25 -2
  108. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
  109. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +25 -2
  110. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
  111. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +14 -7
  112. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
  113. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +118 -14
  114. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
  115. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +30 -9
  116. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
  117. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +102 -18
  118. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
  119. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
  120. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +49 -14
  121. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
  122. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  123. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +97 -17
  124. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  125. package/dist/application/sync/service/SyncServiceBootstrap.d.ts +17 -0
  126. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
  127. package/dist/application/sync/service/SyncServiceBootstrap.js +125 -10
  128. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
  129. package/dist/application/sync/service/contracts.d.ts +2 -0
  130. package/dist/application/sync/service/contracts.d.ts.map +1 -1
  131. package/dist/application/sync/telemetry/syncTiming.d.ts +6 -0
  132. package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -1
  133. package/dist/application/sync/telemetry/syncTiming.js +2 -0
  134. package/dist/application/sync/telemetry/syncTiming.js.map +1 -1
  135. package/dist/domain/conflict/index.d.ts +1 -1
  136. package/dist/domain/conflict/index.d.ts.map +1 -1
  137. package/dist/domain/conflict/index.js +1 -1
  138. package/dist/domain/conflict/index.js.map +1 -1
  139. package/dist/domain/conflict/transitions.d.ts +3 -0
  140. package/dist/domain/conflict/transitions.d.ts.map +1 -1
  141. package/dist/domain/conflict/transitions.js +3 -2
  142. package/dist/domain/conflict/transitions.js.map +1 -1
  143. package/dist/domain/model/constants.d.ts +1 -0
  144. package/dist/domain/model/constants.d.ts.map +1 -1
  145. package/dist/domain/model/constants.js +1 -0
  146. package/dist/domain/model/constants.js.map +1 -1
  147. package/dist/infrastructure/storage/index.d.ts +4 -2
  148. package/dist/infrastructure/storage/index.d.ts.map +1 -1
  149. package/dist/infrastructure/storage/index.js +2 -1
  150. package/dist/infrastructure/storage/index.js.map +1 -1
  151. package/dist/infrastructure/storage/sqlite/migrateSchema.d.ts.map +1 -1
  152. package/dist/infrastructure/storage/sqlite/migrateSchema.js +59 -1
  153. package/dist/infrastructure/storage/sqlite/migrateSchema.js.map +1 -1
  154. package/dist/infrastructure/storage/sqlite/schema.d.ts +12 -1
  155. package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -1
  156. package/dist/infrastructure/storage/sqlite/schema.js +47 -3
  157. package/dist/infrastructure/storage/sqlite/schema.js.map +1 -1
  158. package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts +2 -2
  159. package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts.map +1 -1
  160. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +1 -1
  161. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -1
  162. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts +1 -0
  163. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts.map +1 -1
  164. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js +1 -1
  165. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js.map +1 -1
  166. package/dist/infrastructure/storage/state/observation/observationAudit.js +5 -1
  167. package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -1
  168. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +10 -0
  169. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
  170. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +106 -20
  171. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
  172. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +9 -1
  173. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -1
  174. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js +3 -0
  175. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js.map +1 -1
  176. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +11 -0
  177. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
  178. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +35 -0
  179. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
  180. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +12 -4
  181. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
  182. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +46 -15
  183. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -1
  184. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +24 -0
  185. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
  186. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +1 -0
  187. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
  188. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +9 -7
  189. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
  190. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +44 -8
  191. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
  192. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +3 -1
  193. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -1
  194. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +35 -2
  195. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -1
  196. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js +1 -0
  197. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js.map +1 -1
  198. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts +31 -0
  199. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts.map +1 -0
  200. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js +92 -0
  201. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js.map +1 -0
  202. package/dist/infrastructure/storage/sync/shared/writerLease.js +3 -1
  203. package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -1
  204. package/docs/advanced-sheets-gateway-concurrency-problem.md +434 -0
  205. package/docs/architecture.md +53 -11
  206. package/docs/google-sheets-sync-scaling-strategy.md +459 -0
  207. package/docs/quick-start.md +15 -1
  208. package/docs/sync-bulk-write-benchmark.md +520 -0
  209. package/docs/sync-observability.md +39 -3
  210. package/docs/write-and-synchronization-flow.md +76 -17
  211. package/package.json +1 -1
@@ -9,16 +9,17 @@ import { randomUUID } from "node:crypto";
9
9
  import { EMPTY_STRING_LENGTH_ZERO, NON_NEGATIVE_SAFE_INTEGER_MINIMUM, POSITIVE_SAFE_INTEGER_MINIMUM, } from "../../../../domain/index.js";
10
10
  import { CONFLICT_STATUSES } from "../../../../domain/model/constants.js";
11
11
  import { LOOKUP_RESULT_KINDS, absentValue, presentValue, } from "../../../../shared/state/index.js";
12
- import { applyEffectResultWithAdapter, claimEffectWithAdapter, claimWriterLeaseWithAdapter, recoverExpiredLeasesWithAdapter, listReadyEffectsWithAdapter, releaseUnprocessedEffectWithAdapter, retryClaimedEffectWithAdapter, supersedeAndReplanWithAdapter, hasActiveUserInputCandidateWithSql, } from "../../../../infrastructure/storage/index.js";
12
+ import { applyEffectResultWithAdapter, claimEffectWithAdapter, claimWriterLeaseWithAdapter, markDeliveryUncertainWithAdapter, renewEffectLeaseWithAdapter, recoverExpiredLeasesWithAdapter, listReadyEffectsWithAdapter, releaseUnprocessedEffectWithAdapter, retryClaimedEffectWithAdapter, supersedeAndReplanWithAdapter, hasActiveUserInputCandidateWithSql, ensureSpreadsheetAuthorityWithAdapter, } from "../../../../infrastructure/storage/index.js";
13
13
  import { SYNC_GATEWAY_EFFECT_RESULT_STATUSES, SYNC_GATEWAY_PROJECTIONS, } from "../../gateway/constants.js";
14
+ import { classifyTransportOutcome, TRANSPORT_OUTCOME_KINDS, } from "../../gateway/transportClassification.js";
14
15
  import { WRITER_LEASE_CLAIM_RESULT_KINDS } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
15
16
  import { SYNC_TIMING_SCOPES, } from "../../telemetry/syncTiming.js";
16
- import { DEFAULT_EFFECT_LEASE_DURATION_MS, DEFAULT_WORKER_ROLE, DEFAULT_WRITER_LEASE_DURATION_MS, OUTBOX_EFFECT_STATUSES, WORKER_ERROR_CODES, } from "./SyncEffectWorkerConstants.js";
17
+ import { DEFAULT_EFFECT_LEASE_DURATION_MS, DEFAULT_WORKER_ROLE, EFFECT_LEASE_GATEWAY_HEADROOM_MS, DEFAULT_WRITER_LEASE_DURATION_MS, GATEWAY_EFFECT_BATCH_LIMIT, MAX_IN_FLIGHT_EFFECTS, OUTBOX_EFFECT_STATUSES, WORKER_ERROR_CODES, } from "./SyncEffectWorkerConstants.js";
17
18
  import { isAbsent, isPresent, lookupResult, safeErrorMessage, throwWorkerError, } from "./SyncEffectWorkerHelpers.js";
18
19
  import { countsForItems, countsForPendingEffects, emptyOperationCounts, emitGatewayTiming, emitWorkerTiming, operationKindsForItems, operationKindsForPendingEffects, operationKindsForCounts, } from "./SyncEffectWorkerTiming.js";
19
20
  import { completeFailure, completeGatewayResult, recoverUnknownResults, } from "./SyncEffectWorkerTransitions.js";
20
- import { dispatchFastAppendGroup, rejectUnsupportedGatewayEffects, } from "./SyncEffectWorkerDispatch.js";
21
- import { fenceFromLease, groupByFastAppendRequest, groupByGatewayRequest, isCandidateProtectingUserInputEffect, isFastAppendCandidate, isSuccessfulGatewayPostcondition, toGatewayEffect, } from "./SyncEffectWorkerRouting.js";
21
+ import { dispatchFastAppendGroup, handleGatewayDispatchError, rejectUnsupportedGatewayEffects, } from "./SyncEffectWorkerDispatch.js";
22
+ import { fenceFromLease, groupByFastAppendRequest, groupByGatewayRequest, chunkFastAppendGroups, chunkGatewayEffectGroups, gatewayRouteKey, isCandidateProtectingUserInputEffect, isFastAppendCandidate, isSuccessfulGatewayPostcondition, toGatewayEffect, } from "./SyncEffectWorkerRouting.js";
22
23
  /**
23
24
  * Processes effects through an adapter-owned SQL connection.
24
25
  *
@@ -30,6 +31,13 @@ export async function runSyncEffectWorkerWithAdapter(options) {
30
31
  }
31
32
  async function runEffectWorker(options, storage) {
32
33
  const passStartedAt = Date.now();
34
+ if (options.clock === undefined) {
35
+ const baselineNow = options.now;
36
+ options = {
37
+ ...options,
38
+ clock: () => baselineNow + Math.max(0, Date.now() - passStartedAt),
39
+ };
40
+ }
33
41
  validateOptions(options);
34
42
  const role = options.writerRole ?? DEFAULT_WORKER_ROLE;
35
43
  const leaseDuration = options.writerLeaseDurationMs ?? DEFAULT_WRITER_LEASE_DURATION_MS;
@@ -67,27 +75,118 @@ async function runEffectWorker(options, storage) {
67
75
  operationKinds: [],
68
76
  operationCounts: emptyOperationCounts(),
69
77
  });
70
- const fence = fenceFromLease(claimResult.lease, options.now);
78
+ let fence = fenceFromLease(claimResult.lease, options.now);
79
+ const leaseNow = () => options.clock?.() ?? options.now + Math.max(0, Date.now() - passStartedAt);
80
+ const currentFence = () => ({
81
+ ...fence,
82
+ // Direct worker callers may provide a deterministic `now` but no clock;
83
+ // advance that baseline by elapsed wall time so a slow remote call cannot
84
+ // reuse a pass-start timestamp after the writer lease has expired.
85
+ now: leaseNow(),
86
+ });
87
+ const refreshDispatchLeases = async (items) => {
88
+ const now = leaseNow();
89
+ const writerRefresh = await storage.claimWriterLease({
90
+ role,
91
+ writerId: options.workerId,
92
+ leaseDurationMs: leaseDuration,
93
+ now,
94
+ });
95
+ if (writerRefresh.kind !== WRITER_LEASE_CLAIM_RESULT_KINDS.CLAIMED)
96
+ return false;
97
+ if (writerRefresh.lease.writerEpoch !== fence.writerEpoch ||
98
+ writerRefresh.lease.fencingToken !== fence.fencingToken) {
99
+ // The old fence expired and was taken over. Do not dispatch effects
100
+ // claimed under that token; the next pass will recover them safely.
101
+ fence = fenceFromLease(writerRefresh.lease, now);
102
+ await storage.recoverExpiredLeases(currentFence());
103
+ return false;
104
+ }
105
+ const authoritySheetIds = new Set(items.map((item) => item.pending.physical_sheet_id));
106
+ for (const physicalSheetId of authoritySheetIds) {
107
+ if (!(await storage.ensureSpreadsheetAuthority({
108
+ ...currentFence(),
109
+ physicalSheetId,
110
+ ownerId: options.workerId,
111
+ }))) {
112
+ await storage.recoverExpiredLeases(currentFence());
113
+ return false;
114
+ }
115
+ }
116
+ const renewed = [];
117
+ const notRenewed = [];
118
+ for (const item of items) {
119
+ if (await storage.renewEffectLease({
120
+ ...currentFence(),
121
+ effectId: item.pending.effect_id,
122
+ claimToken: item.claimToken,
123
+ leaseDurationMs: effectLeaseDuration,
124
+ }))
125
+ renewed.push(item);
126
+ else
127
+ notRenewed.push(item);
128
+ }
129
+ if (renewed.length === items.length)
130
+ return true;
131
+ await storage.recoverExpiredLeases(currentFence());
132
+ for (const item of renewed) {
133
+ if (await storage.releaseUnprocessedEffect({
134
+ ...currentFence(),
135
+ effectId: item.pending.effect_id,
136
+ claimToken: item.claimToken,
137
+ }))
138
+ report.deferred += 1;
139
+ }
140
+ for (const item of notRenewed) {
141
+ if (await storage.retryClaimedEffect({
142
+ ...currentFence(),
143
+ effectId: item.pending.effect_id,
144
+ claimToken: item.claimToken,
145
+ lastErrorCode: WORKER_ERROR_CODES.GATEWAY_RETRYABLE_ERROR,
146
+ lastErrorMessage: "Effect lease could not be renewed before remote dispatch.",
147
+ })) {
148
+ report.requeued += 1;
149
+ report.deferred += 1;
150
+ }
151
+ }
152
+ return false;
153
+ };
154
+ const coalesceStartedAt = Date.now();
155
+ const coalescedMs = await options.batchController?.waitForCoalescing(Date.now()) ?? 0;
156
+ if (coalescedMs > 0) {
157
+ emitWorkerTiming(options, {
158
+ scope: SYNC_TIMING_SCOPES.WORKER,
159
+ phase: "batch_coalesce_wait",
160
+ durationMs: Date.now() - coalesceStartedAt,
161
+ operationKinds: [],
162
+ operationCounts: emptyOperationCounts(),
163
+ });
164
+ }
71
165
  const selectStartedAt = Date.now();
72
- report.expiredLeasesRecovered = await storage.recoverExpiredLeases(fence);
73
- const selected = await storage.listReadyEffects(options.maxEffects);
74
- report.selected = selected.length;
166
+ report.expiredLeasesRecovered = await storage.recoverExpiredLeases(currentFence());
167
+ const selected = await storage.listReadyEffects(options.maxEffects, currentFence().now);
168
+ // Keep maxEffects as the SQLite selection upper bound, but only lease a
169
+ // bounded in-flight window before the first remote dispatch. Remaining rows
170
+ // stay durable and are picked up on the next pass.
171
+ const claimable = selected.slice(0, MAX_IN_FLIGHT_EFFECTS);
172
+ report.selected = claimable.length;
75
173
  emitWorkerTiming(options, {
76
174
  scope: SYNC_TIMING_SCOPES.WORKER,
77
175
  phase: "recover_and_select",
78
176
  durationMs: Date.now() - selectStartedAt,
79
- operationKinds: operationKindsForPendingEffects(selected),
80
- operationCounts: countsForPendingEffects(selected),
177
+ operationKinds: operationKindsForPendingEffects(claimable),
178
+ operationCounts: countsForPendingEffects(claimable),
81
179
  });
82
180
  const claimed = [];
83
181
  const recoveryCandidates = [];
84
182
  const claimEffectsStartedAt = Date.now();
85
- for (const pending of selected) {
183
+ for (const pending of claimable) {
86
184
  const claimToken = "claim:" + randomUUID();
87
185
  const claim = await storage.claimEffect({
88
- ...fence,
186
+ ...currentFence(),
89
187
  effectId: pending.effect_id,
90
188
  claimToken,
189
+ dispatchId: "dispatch:" + randomUUID(),
91
190
  leaseDurationMs: effectLeaseDuration,
92
191
  });
93
192
  if (claim.status !== "claimed")
@@ -104,7 +203,8 @@ async function runEffectWorker(options, storage) {
104
203
  invalidPayloadError = presentValue(safeErrorMessage(error));
105
204
  }
106
205
  const item = { pending, claimToken, gatewayEffect, invalidPayloadError };
107
- if (pending.status === OUTBOX_EFFECT_STATUSES.FAILED) {
206
+ if (pending.status === OUTBOX_EFFECT_STATUSES.FAILED ||
207
+ pending.status === OUTBOX_EFFECT_STATUSES.DELIVERY_UNCERTAIN) {
108
208
  recoveryCandidates.push(item);
109
209
  continue;
110
210
  }
@@ -121,14 +221,14 @@ async function runEffectWorker(options, storage) {
121
221
  ? options.gateway
122
222
  : undefined;
123
223
  if (fullGateway === undefined) {
124
- await rejectUnsupportedGatewayEffects(storage, fence, recoveryCandidates, report);
224
+ await rejectUnsupportedGatewayEffects(storage, currentFence(), recoveryCandidates, report);
125
225
  }
126
- else {
127
- await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, recoveryCandidates, report);
226
+ else if (await refreshDispatchLeases(recoveryCandidates)) {
227
+ await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, currentFence(), recoveryCandidates, report);
128
228
  }
129
229
  const usable = claimed.filter((item) => isPresent(item.gatewayEffect));
130
230
  for (const invalid of claimed.filter((item) => isAbsent(item.gatewayEffect))) {
131
- await completeFailure(storage, fence, invalid, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, invalid.invalidPayloadError, report);
231
+ await completeFailure(storage, currentFence(), invalid, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, invalid.invalidPayloadError, report);
132
232
  }
133
233
  // A User_Input reconcile or physical delete is safe only while no unresolved
134
234
  // user candidate owns one of its fields. This local gate runs before the
@@ -142,7 +242,7 @@ async function runEffectWorker(options, storage) {
142
242
  continue;
143
243
  }
144
244
  if (await storage.applyEffectResult({
145
- ...fence,
245
+ ...currentFence(),
146
246
  effectId: item.pending.effect_id,
147
247
  claimToken: item.claimToken,
148
248
  status: OUTBOX_EFFECT_STATUSES.BLOCKED_CANDIDATE,
@@ -161,41 +261,82 @@ async function runEffectWorker(options, storage) {
161
261
  });
162
262
  const fastAppendItems = dispatchable.filter(isFastAppendCandidate);
163
263
  const regularItems = dispatchable.filter((item) => !isFastAppendCandidate(item));
164
- for (const group of groupByFastAppendRequest(fastAppendItems)) {
165
- await dispatchFastAppendGroup(options, storage, fence, group, report);
264
+ const fastAppendGroups = chunkFastAppendGroups(groupByFastAppendRequest(fastAppendItems, {
265
+ epoch: currentFence().writerEpoch,
266
+ token: currentFence().fencingToken,
267
+ }), (group) => options.batchController?.limitFor(gatewayRouteKey(group.request)) ?? GATEWAY_EFFECT_BATCH_LIMIT);
268
+ for (const group of fastAppendGroups) {
269
+ if (!(await refreshDispatchLeases(group.items)))
270
+ continue;
271
+ await dispatchFastAppendGroup(options, storage, currentFence(), group, report, fullGateway, () => refreshDispatchLeases(group.items));
166
272
  }
167
273
  if (fullGateway === undefined) {
168
- await rejectUnsupportedGatewayEffects(storage, fence, regularItems, report);
274
+ await rejectUnsupportedGatewayEffects(storage, currentFence(), regularItems, report);
169
275
  }
170
276
  else {
171
- for (const group of groupByGatewayRequest(regularItems)) {
277
+ // Chunk each physical route to the Apps Script bounded effect batch so one
278
+ // applyEffects call returns a complete result set. An oversized configured
279
+ // worker limit (maxEffects) would otherwise send more effects than the
280
+ // gateway acknowledges per call, producing hasMore partial prefixes and the
281
+ // deferred/requeue churn they cause on every pass.
282
+ const regularGroups = chunkGatewayEffectGroups(groupByGatewayRequest(regularItems, {
283
+ epoch: currentFence().writerEpoch,
284
+ token: currentFence().fencingToken,
285
+ }), (group) => options.batchController?.limitFor(gatewayRouteKey(group.request)) ?? GATEWAY_EFFECT_BATCH_LIMIT);
286
+ for (const group of regularGroups) {
287
+ if (!(await refreshDispatchLeases(group.items)))
288
+ continue;
172
289
  const deferredEffectIds = new Set();
173
290
  let response;
174
291
  const regularOperationCounts = countsForItems(group.items);
175
292
  const regularOperationKinds = operationKindsForCounts(regularOperationCounts);
176
293
  const gatewayStartedAt = Date.now();
294
+ const routeKey = gatewayRouteKey(group.request);
295
+ const batchLimit = options.batchController?.beginDispatch(routeKey, gatewayStartedAt) ?? GATEWAY_EFFECT_BATCH_LIMIT;
177
296
  try {
178
297
  response = await fullGateway.applyEffects(group.request);
179
298
  }
180
- catch {
299
+ catch (error) {
300
+ const outcome = classifyTransportOutcome(error);
301
+ options.batchController?.observe(routeKey, {
302
+ durationMs: Date.now() - gatewayStartedAt,
303
+ responseSucceeded: false,
304
+ responseLoss: outcome.kind === TRANSPORT_OUTCOME_KINDS.DELIVERY_UNCERTAIN,
305
+ });
306
+ const failedDurationMs = Date.now() - gatewayStartedAt;
181
307
  emitWorkerTiming(options, {
182
308
  scope: SYNC_TIMING_SCOPES.WORKER,
183
309
  phase: "regular_gateway_dispatch",
184
- durationMs: Date.now() - gatewayStartedAt,
310
+ durationMs: failedDurationMs,
185
311
  operationKinds: regularOperationKinds,
186
312
  operationCounts: regularOperationCounts,
313
+ routeKey,
314
+ batchLimit,
315
+ responseSucceeded: false,
187
316
  });
188
- // Remote side may have written the effect before transport failed.
189
- await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, group.items, report);
317
+ // Remote side may have written the effect before an uncertain
318
+ // transport failure. Explicit remote failures skip recovery because
319
+ // the Gateway already proved that the operation was rejected.
320
+ const resultFence = currentFence();
321
+ await handleGatewayDispatchError(options, storage, resultFence, group.items, report, outcome, fullGateway, () => refreshDispatchLeases(group.items));
190
322
  continue;
191
323
  }
324
+ const regularGatewayDurationMs = Date.now() - gatewayStartedAt;
325
+ options.batchController?.observe(routeKey, {
326
+ durationMs: regularGatewayDurationMs,
327
+ responseSucceeded: response.results.length === group.items.length && !response.hasMore,
328
+ responseLoss: response.results.length !== group.items.length || response.hasMore,
329
+ });
192
330
  emitGatewayTiming(options, response.timing);
193
331
  emitWorkerTiming(options, {
194
332
  scope: SYNC_TIMING_SCOPES.WORKER,
195
333
  phase: "regular_gateway_dispatch",
196
- durationMs: Date.now() - gatewayStartedAt,
334
+ durationMs: regularGatewayDurationMs,
197
335
  operationKinds: regularOperationKinds,
198
336
  operationCounts: regularOperationCounts,
337
+ routeKey,
338
+ batchLimit,
339
+ responseSucceeded: response.results.length === group.items.length && !response.hasMore,
199
340
  });
200
341
  const resultPersistenceStartedAt = Date.now();
201
342
  const byEffectId = new Map(response.results.map((result) => [result.effectId, result]));
@@ -203,7 +344,7 @@ async function runEffectWorker(options, storage) {
203
344
  const result = lookupResult(byEffectId.get(item.pending.effect_id));
204
345
  if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND && response.hasMore) {
205
346
  if (await storage.releaseUnprocessedEffect({
206
- ...fence,
347
+ ...currentFence(),
207
348
  effectId: item.pending.effect_id,
208
349
  claimToken: item.claimToken,
209
350
  })) {
@@ -236,9 +377,11 @@ async function runEffectWorker(options, storage) {
236
377
  recoveryItems.push(item);
237
378
  continue;
238
379
  }
239
- await completeGatewayResult(options, storage, fence, item, result.value, report);
380
+ await completeGatewayResult(options, storage, currentFence(), item, result.value, report);
381
+ }
382
+ if (await refreshDispatchLeases(recoveryItems)) {
383
+ await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, currentFence(), recoveryItems, report);
240
384
  }
241
- await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, recoveryItems, report);
242
385
  emitWorkerTiming(options, {
243
386
  scope: SYNC_TIMING_SCOPES.WORKER,
244
387
  phase: "regular_result_persistence",
@@ -261,8 +404,14 @@ function createAdapterEffectWorkerStorage(storage) {
261
404
  return {
262
405
  claimWriterLease: (options) => claimWriterLeaseWithAdapter(storage, options),
263
406
  recoverExpiredLeases: (fence) => recoverExpiredLeasesWithAdapter(storage, fence),
264
- listReadyEffects: (limit) => listReadyEffectsWithAdapter(storage, limit),
407
+ listReadyEffects: (limit, now) => listReadyEffectsWithAdapter(storage, limit, now),
265
408
  claimEffect: (options) => claimEffectWithAdapter(storage, options),
409
+ ensureSpreadsheetAuthority: async (options) => {
410
+ const result = await ensureSpreadsheetAuthorityWithAdapter(storage, options);
411
+ return result.kind === "claimed";
412
+ },
413
+ markDeliveryUncertain: (options) => markDeliveryUncertainWithAdapter(storage, options),
414
+ renewEffectLease: (options) => renewEffectLeaseWithAdapter(storage, options),
266
415
  applyEffectResult: (options) => applyEffectResultWithAdapter(storage, options),
267
416
  releaseUnprocessedEffect: (options) => releaseUnprocessedEffectWithAdapter(storage, options),
268
417
  retryClaimedEffect: (options) => retryClaimedEffectWithAdapter(storage, options),
@@ -336,11 +485,21 @@ function validateOptions(options) {
336
485
  for (const [name, value] of [
337
486
  ["writerLeaseDurationMs", options.writerLeaseDurationMs],
338
487
  ["effectLeaseDurationMs", options.effectLeaseDurationMs],
488
+ ["gatewayTimeoutMs", options.gatewayTimeoutMs],
339
489
  ]) {
340
490
  if (value !== undefined &&
341
491
  (!Number.isSafeInteger(value) || value < POSITIVE_SAFE_INTEGER_MINIMUM)) {
342
492
  throwWorkerError(name + " must be a positive safe integer");
343
493
  }
344
494
  }
495
+ const writerLeaseDuration = options.writerLeaseDurationMs ?? DEFAULT_WRITER_LEASE_DURATION_MS;
496
+ const effectLeaseDuration = options.effectLeaseDurationMs ?? DEFAULT_EFFECT_LEASE_DURATION_MS;
497
+ if (writerLeaseDuration <= effectLeaseDuration) {
498
+ throwWorkerError("writerLeaseDurationMs must exceed effectLeaseDurationMs");
499
+ }
500
+ if (options.gatewayTimeoutMs !== undefined &&
501
+ effectLeaseDuration <= options.gatewayTimeoutMs + EFFECT_LEASE_GATEWAY_HEADROOM_MS) {
502
+ throwWorkerError("effectLeaseDurationMs must exceed gatewayTimeoutMs by 30 seconds");
503
+ }
345
504
  }
346
505
  //# sourceMappingURL=SyncEffectWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyncEffectWorker.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncEffectWorker.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,27 @@
1
1
  /** Constants and durable status contracts shared by the effect worker modules. */
2
2
  export declare const DEFAULT_WORKER_ROLE = "sync-effect-worker";
3
- export declare const DEFAULT_WRITER_LEASE_DURATION_MS = 60000;
4
- export declare const DEFAULT_EFFECT_LEASE_DURATION_MS = 30000;
3
+ /** Outbound writer lease must outlive the longest remote effect request. */
4
+ export declare const DEFAULT_WRITER_LEASE_DURATION_MS = 180000;
5
+ /** Minimum headroom between the remote timeout and the effect lease. */
6
+ export declare const EFFECT_LEASE_GATEWAY_HEADROOM_MS = 30000;
7
+ /** Must exceed the 60-second Apps Script transport timeout plus recovery margin. */
8
+ export declare const DEFAULT_EFFECT_LEASE_DURATION_MS = 120000;
9
+ /**
10
+ * Maximum effects one Apps Script `applyEffects` call will acknowledge.
11
+ *
12
+ * The deployed gateway caps a single bounded effect batch (see `MAX_EFFECTS`
13
+ * in effectOperationScript.ts). Chunking each physical route's dispatch to
14
+ * this limit keeps every request inside that batch, so an oversized configured
15
+ * worker limit (`maxEffects`) does not turn one route into repeated partial
16
+ * (`hasMore`) responses and the deferred/requeue churn they cause.
17
+ */
18
+ export declare const GATEWAY_EFFECT_BATCH_LIMIT = 20;
19
+ /**
20
+ * Maximum number of effects leased before dispatch starts. Selection may use a
21
+ * larger SQLite upper bound, but a worker pass must not lease an unbounded
22
+ * backlog while a remote batch is in flight.
23
+ */
24
+ export declare const MAX_IN_FLIGHT_EFFECTS = 20;
5
25
  export declare const SYNC_EFFECT_KINDS: {
6
26
  readonly SYSTEM_PROJECTION: "system_projection";
7
27
  readonly CANDIDATE_RECONCILE: "candidate_reconcile";
@@ -17,6 +37,7 @@ export declare const EFFECT_TARGET_KINDS: {
17
37
  readonly CONFLICT: "conflict";
18
38
  };
19
39
  export declare const OUTBOX_EFFECT_STATUSES: {
40
+ readonly DELIVERY_UNCERTAIN: "delivery_uncertain";
20
41
  readonly FAILED: "failed";
21
42
  readonly APPLIED: "applied";
22
43
  readonly BLOCKED_CANDIDATE: "blocked_candidate";
@@ -30,7 +51,9 @@ export declare const WORKER_ERROR_CODES: {
30
51
  readonly CANDIDATE_GUARD_MISMATCH: "candidate_guard_mismatch";
31
52
  readonly VISIBLE_GUARD_MISMATCH: "visible_guard_mismatch";
32
53
  readonly GATEWAY_SCHEMA_ERROR: "gateway_schema_error";
54
+ readonly GATEWAY_REMOTE_ERROR: "gateway_remote_error";
33
55
  readonly GATEWAY_RETRYABLE_ERROR: "gateway_retryable_error";
56
+ readonly DELIVERY_UNCERTAIN_REQUIRES_PROBE: "delivery_uncertain_requires_probe";
34
57
  readonly POSTCONDITION_READ_FAILED: "postcondition_read_failed";
35
58
  readonly POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE: "postcondition_applied_without_visible_state";
36
59
  readonly POSTCONDITION_UNAVAILABLE: "postcondition_unavailable";
@@ -1 +1 @@
1
- {"version":3,"file":"SyncEffectWorkerConstants.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAUlF,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD,eAAO,MAAM,iBAAiB;;;;;;;CAA8D,CAAC;AAE7F,eAAO,MAAM,mBAAmB;;;;;CAA2E,CAAC;AAE5G,eAAO,MAAM,sBAAsB;;;;;;CAMc,CAAC;AAElD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;CAkBrB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"SyncEffectWorkerConstants.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAUlF,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,4EAA4E;AAC5E,eAAO,MAAM,gCAAgC,SAAU,CAAC;AACxD,wEAAwE;AACxE,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,oFAAoF;AACpF,eAAO,MAAM,gCAAgC,SAAU,CAAC;AAExD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAA6B,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;CAA8D,CAAC;AAE7F,eAAO,MAAM,mBAAmB;;;;;CAA2E,CAAC;AAE5G,eAAO,MAAM,sBAAsB;;;;;;;CAOc,CAAC;AAElD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;CAqBrB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"}
@@ -2,11 +2,32 @@
2
2
  import { EFFECT_KINDS as CANONICAL_EFFECT_KINDS, EFFECT_STATUSES as CANONICAL_EFFECT_STATUSES, EFFECT_TARGET_KINDS as CANONICAL_EFFECT_TARGET_KINDS, } from "../../../../domain/model/constants.js";
3
3
  import { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "../../../../infrastructure/storage/sync/outbound/effectOutbox.js";
4
4
  export const DEFAULT_WORKER_ROLE = "sync-effect-worker";
5
- export const DEFAULT_WRITER_LEASE_DURATION_MS = 60_000;
6
- export const DEFAULT_EFFECT_LEASE_DURATION_MS = 30_000;
5
+ /** Outbound writer lease must outlive the longest remote effect request. */
6
+ export const DEFAULT_WRITER_LEASE_DURATION_MS = 180_000;
7
+ /** Minimum headroom between the remote timeout and the effect lease. */
8
+ export const EFFECT_LEASE_GATEWAY_HEADROOM_MS = 30_000;
9
+ /** Must exceed the 60-second Apps Script transport timeout plus recovery margin. */
10
+ export const DEFAULT_EFFECT_LEASE_DURATION_MS = 120_000;
11
+ /**
12
+ * Maximum effects one Apps Script `applyEffects` call will acknowledge.
13
+ *
14
+ * The deployed gateway caps a single bounded effect batch (see `MAX_EFFECTS`
15
+ * in effectOperationScript.ts). Chunking each physical route's dispatch to
16
+ * this limit keeps every request inside that batch, so an oversized configured
17
+ * worker limit (`maxEffects`) does not turn one route into repeated partial
18
+ * (`hasMore`) responses and the deferred/requeue churn they cause.
19
+ */
20
+ export const GATEWAY_EFFECT_BATCH_LIMIT = 20;
21
+ /**
22
+ * Maximum number of effects leased before dispatch starts. Selection may use a
23
+ * larger SQLite upper bound, but a worker pass must not lease an unbounded
24
+ * backlog while a remote batch is in flight.
25
+ */
26
+ export const MAX_IN_FLIGHT_EFFECTS = GATEWAY_EFFECT_BATCH_LIMIT;
7
27
  export const SYNC_EFFECT_KINDS = CANONICAL_EFFECT_KINDS;
8
28
  export const EFFECT_TARGET_KINDS = CANONICAL_EFFECT_TARGET_KINDS;
9
29
  export const OUTBOX_EFFECT_STATUSES = {
30
+ DELIVERY_UNCERTAIN: CANONICAL_EFFECT_STATUSES.DELIVERY_UNCERTAIN,
10
31
  FAILED: CANONICAL_EFFECT_STATUSES.FAILED,
11
32
  APPLIED: CANONICAL_EFFECT_STATUSES.APPLIED,
12
33
  BLOCKED_CANDIDATE: CANONICAL_EFFECT_STATUSES.BLOCKED_CANDIDATE,
@@ -20,7 +41,9 @@ export const WORKER_ERROR_CODES = {
20
41
  CANDIDATE_GUARD_MISMATCH: "candidate_guard_mismatch",
21
42
  VISIBLE_GUARD_MISMATCH: "visible_guard_mismatch",
22
43
  GATEWAY_SCHEMA_ERROR: "gateway_schema_error",
44
+ GATEWAY_REMOTE_ERROR: "gateway_remote_error",
23
45
  GATEWAY_RETRYABLE_ERROR: SYNC_EFFECT_RECOVERY_ERROR_CODES.GATEWAY_RETRYABLE_ERROR,
46
+ DELIVERY_UNCERTAIN_REQUIRES_PROBE: SYNC_EFFECT_RECOVERY_ERROR_CODES.DELIVERY_UNCERTAIN_REQUIRES_PROBE,
24
47
  POSTCONDITION_READ_FAILED: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_READ_FAILED,
25
48
  POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE: "postcondition_applied_without_visible_state",
26
49
  POSTCONDITION_UNAVAILABLE: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_UNAVAILABLE,
@@ -1 +1 @@
1
- {"version":3,"file":"SyncEffectWorkerConstants.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EACL,YAAY,IAAI,sBAAsB,EACtC,eAAe,IAAI,yBAAyB,EAC5C,mBAAmB,IAAI,6BAA6B,GACrD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AAEpH,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAA2D,CAAC;AAE7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAAwE,CAAC;AAE5G,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,yBAAyB,CAAC,MAAM;IACxC,OAAO,EAAE,yBAAyB,CAAC,OAAO;IAC1C,iBAAiB,EAAE,yBAAyB,CAAC,iBAAiB;IAC9D,UAAU,EAAE,yBAAyB,CAAC,UAAU;IAChD,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;CACG,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;IACxD,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,gCAAgC,CAAC,uBAAuB;IACjF,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,2CAA2C,EAAE,6CAA6C;IAC1F,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,qBAAqB,EAAE,uBAAuB;IAC9C,wCAAwC,EACtC,gCAAgC,CAAC,wCAAwC;IAC3E,uCAAuC,EAAE,yCAAyC;IAClF,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;CAChD,CAAC"}
1
+ {"version":3,"file":"SyncEffectWorkerConstants.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EACL,YAAY,IAAI,sBAAsB,EACtC,eAAe,IAAI,yBAAyB,EAC5C,mBAAmB,IAAI,6BAA6B,GACrD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AAEpH,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CAAC;AACxD,wEAAwE;AACxE,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,oFAAoF;AACpF,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAA2D,CAAC;AAE7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAAwE,CAAC;AAE5G,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,kBAAkB,EAAE,yBAAyB,CAAC,kBAAkB;IAChE,MAAM,EAAE,yBAAyB,CAAC,MAAM;IACxC,OAAO,EAAE,yBAAyB,CAAC,OAAO;IAC1C,iBAAiB,EAAE,yBAAyB,CAAC,iBAAiB;IAC9D,UAAU,EAAE,yBAAyB,CAAC,UAAU;IAChD,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;CACG,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;IACxD,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,gCAAgC,CAAC,uBAAuB;IACjF,iCAAiC,EAC/B,gCAAgC,CAAC,iCAAiC;IACpE,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,2CAA2C,EAAE,6CAA6C;IAC1F,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,qBAAqB,EAAE,uBAAuB;IAC9C,wCAAwC,EACtC,gCAAgC,CAAC,wCAAwC;IAC3E,uCAAuC,EAAE,yCAAyC;IAClF,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;CAChD,CAAC"}
@@ -1,20 +1,27 @@
1
1
  /** Fast-append and unsupported-capability dispatch paths for the effect worker. */
2
2
  import type { FencingContext } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
3
- import type { FastAppendRowsRequest } from "../../gateway/syncGateway.js";
3
+ import type { FastAppendRowsRequest, SyncEffectWorkerFullGateway } from "../../gateway/syncGateway.js";
4
+ import { type TransportOutcome } from "../../gateway/transportClassification.js";
4
5
  import type { ClaimedEffect, EffectWorkerStorage, MutableReport, SyncEffectWorkerBaseOptions } from "./SyncEffectWorker.js";
5
6
  /** Fails regular effects explicitly when the configured gateway is fast-only. */
6
7
  export declare function rejectUnsupportedGatewayEffects(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
7
8
  /**
8
- * Dispatches append-only system rows without remote CAS or postcondition reads.
9
+ * Handles a failed remote dispatch at the transport boundary.
9
10
  *
10
- * A lost response is returned to pending. The append-only gateway deliberately
11
- * does not keep row metadata for retry deduplication, so a retry can append a
12
- * duplicate; reconciliation remains the eventual correction path.
11
+ * A thrown batch-level dispatch error is not per-effect rejection evidence for
12
+ * an uncertain transport. Explicit structured remote failures are different:
13
+ * the Gateway has returned a verified rejection, so they close the effects in
14
+ * the terminal failure path rather than entering recovery.
15
+ */
16
+ export declare function handleGatewayDispatchError(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport, outcome: TransportOutcome, fullGateway?: SyncEffectWorkerFullGateway, beforeRecovery?: () => Promise<boolean>, onUncertainWithoutRecovery?: () => Promise<void>): Promise<void>;
17
+ /**
18
+ * Dispatches append-only rows through the idempotent Gateway batch operation.
19
+ * A lost response is still returned to recovery; the Gateway receipt batch lets
20
+ * the next attempt classify an already committed write without appending again.
13
21
  */
14
22
  export declare function dispatchFastAppendGroup(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, group: {
15
23
  readonly request: FastAppendRowsRequest;
16
24
  readonly items: readonly ClaimedEffect[];
17
- }, report: MutableReport): Promise<void>;
18
- /** Returns a response-lost fast append to pending for reconciliation-backed retry. */
25
+ }, report: MutableReport, fullGateway?: SyncEffectWorkerFullGateway, beforeRecovery?: () => Promise<boolean>): Promise<void>;
19
26
  export declare function requeueFastAppendItems(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
20
27
  //# sourceMappingURL=SyncEffectWorkerDispatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,8BAA8B,CAAC;AAkBtC,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,iFAAiF;AACjF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmEf;AAED,sFAAsF;AACtF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAaf"}
1
+ {"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,EACrB,2BAA2B,EAE5B,MAAM,8BAA8B,CAAC;AAoBtC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,iFAAiF;AACjF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,2BAA2B,EACzC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACvC,0BAA0B,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,EACD,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,2BAA2B,EACzC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAyIf;AA2CD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAaf"}