@giveitsmaller/contracts 0.73.0 → 0.78.0

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 (579) hide show
  1. package/README.md +2 -2
  2. package/accepted-options/accepted-options.json +1 -1
  3. package/accepted-options/image-output-routes.json +16 -2
  4. package/asyncapi/README.md +1 -1
  5. package/asyncapi/events.yaml +353 -90
  6. package/availability/availability.json +142 -45
  7. package/code-builder/code-builder-metadata.json +205 -45
  8. package/dist/asyncapi/AnonymousSchema_217.d.ts +6 -0
  9. package/dist/asyncapi/AnonymousSchema_217.js +7 -0
  10. package/dist/asyncapi/ErrorCode.d.ts +1 -0
  11. package/dist/asyncapi/ErrorCode.js +1 -0
  12. package/dist/asyncapi/Failure.d.ts +3 -0
  13. package/dist/asyncapi/LongFormJobMessage.d.ts +1 -0
  14. package/dist/asyncapi/MultiOutputCompletion.d.ts +3 -0
  15. package/dist/asyncapi/OperationMetrics.d.ts +2 -0
  16. package/dist/asyncapi/SingleOutputCompletion.d.ts +3 -0
  17. package/dist/asyncapi/UploadProbeMediaMetadata.d.ts +14 -0
  18. package/dist/asyncapi/index.d.ts +1 -0
  19. package/dist/asyncapi/index.js +1 -0
  20. package/dist/openapi/models/AccountLimitEntry.d.ts +2 -2
  21. package/dist/openapi/models/AccountLimitEntry.js +2 -2
  22. package/dist/openapi/models/AccountLimits.d.ts +2 -2
  23. package/dist/openapi/models/AccountLimits.js +2 -2
  24. package/dist/openapi/models/AccountLimitsLimits.d.ts +14 -2
  25. package/dist/openapi/models/AccountLimitsLimits.js +6 -2
  26. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +2 -2
  27. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +2 -2
  28. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +145 -0
  29. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +82 -0
  30. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +131 -0
  31. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +77 -0
  32. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +2 -2
  33. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +2 -2
  34. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +2 -2
  35. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +2 -2
  36. package/dist/openapi/models/AuthErrorResponse.d.ts +14 -5
  37. package/dist/openapi/models/AuthErrorResponse.js +2 -2
  38. package/dist/openapi/models/AuthErrorType.d.ts +2 -2
  39. package/dist/openapi/models/AuthErrorType.js +2 -2
  40. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +2 -2
  41. package/dist/openapi/models/AuthRejectionEnvelope.js +2 -2
  42. package/dist/openapi/models/AuthenticatedIdentity.d.ts +2 -2
  43. package/dist/openapi/models/AuthenticatedIdentity.js +2 -2
  44. package/dist/openapi/models/AvailabilityValue.d.ts +2 -2
  45. package/dist/openapi/models/AvailabilityValue.js +2 -2
  46. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +14 -5
  47. package/dist/openapi/models/BalanceExhaustedResponse.js +2 -2
  48. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +2 -2
  49. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +2 -2
  50. package/dist/openapi/models/BillingCheckoutRequest.d.ts +2 -2
  51. package/dist/openapi/models/BillingCheckoutRequest.js +2 -2
  52. package/dist/openapi/models/BillingCheckoutSession.d.ts +2 -2
  53. package/dist/openapi/models/BillingCheckoutSession.js +2 -2
  54. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +2 -2
  55. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +2 -2
  56. package/dist/openapi/models/CallbackEventType.d.ts +2 -2
  57. package/dist/openapi/models/CallbackEventType.js +2 -2
  58. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +2 -2
  59. package/dist/openapi/models/CancelAccountDeletion200Response.js +2 -2
  60. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +2 -2
  61. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +2 -2
  62. package/dist/openapi/models/CapabilityCondition.d.ts +2 -2
  63. package/dist/openapi/models/CapabilityCondition.js +2 -2
  64. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +2 -2
  65. package/dist/openapi/models/CapabilityConditionOneOf.js +2 -2
  66. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +2 -2
  67. package/dist/openapi/models/CapabilityConditionOneOf1.js +2 -2
  68. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +2 -2
  69. package/dist/openapi/models/CapabilityConditionOneOf2.js +2 -2
  70. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +2 -2
  71. package/dist/openapi/models/CapabilityConditionOneOf3.js +2 -2
  72. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +2 -2
  73. package/dist/openapi/models/CapabilityConditionOneOf4.js +2 -2
  74. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +2 -2
  75. package/dist/openapi/models/CapabilityConditionOneOf5.js +2 -2
  76. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +2 -2
  77. package/dist/openapi/models/CapabilityConditionOneOf6.js +2 -2
  78. package/dist/openapi/models/CapabilityConstraint.d.ts +2 -2
  79. package/dist/openapi/models/CapabilityConstraint.js +2 -2
  80. package/dist/openapi/models/CapabilityInputSpec.d.ts +2 -2
  81. package/dist/openapi/models/CapabilityInputSpec.js +2 -2
  82. package/dist/openapi/models/CapabilityProduces.d.ts +2 -2
  83. package/dist/openapi/models/CapabilityProduces.js +2 -2
  84. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +2 -2
  85. package/dist/openapi/models/CapabilityProducesOneOf.js +2 -2
  86. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +2 -2
  87. package/dist/openapi/models/CapabilityProducesOneOf1.js +2 -2
  88. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +2 -2
  89. package/dist/openapi/models/CapabilityProducesOneOf2.js +2 -2
  90. package/dist/openapi/models/ChangePasswordRequest.d.ts +2 -2
  91. package/dist/openapi/models/ChangePasswordRequest.js +2 -2
  92. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +46 -0
  93. package/dist/openapi/models/CheckoutSessionStatusResponse.js +54 -0
  94. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +50 -0
  95. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +55 -0
  96. package/dist/openapi/models/CodegenSource.d.ts +5 -4
  97. package/dist/openapi/models/CodegenSource.js +2 -2
  98. package/dist/openapi/models/CodegenSourceInput.d.ts +2 -2
  99. package/dist/openapi/models/CodegenSourceInput.js +2 -2
  100. package/dist/openapi/models/CodegenSourceJob.d.ts +2 -2
  101. package/dist/openapi/models/CodegenSourceJob.js +2 -2
  102. package/dist/openapi/models/CodegenSourceJobSource.d.ts +2 -2
  103. package/dist/openapi/models/CodegenSourceJobSource.js +2 -2
  104. package/dist/openapi/models/CodegenSourceOperation.d.ts +2 -2
  105. package/dist/openapi/models/CodegenSourceOperation.js +2 -2
  106. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +2 -2
  107. package/dist/openapi/models/CodegenUploadPlaceholder.js +2 -2
  108. package/dist/openapi/models/CompositionPlan.d.ts +2 -2
  109. package/dist/openapi/models/CompositionPlan.js +2 -2
  110. package/dist/openapi/models/CompositionPlanJob.d.ts +2 -2
  111. package/dist/openapi/models/CompositionPlanJob.js +2 -2
  112. package/dist/openapi/models/CompositionPlanOperation.d.ts +2 -2
  113. package/dist/openapi/models/CompositionPlanOperation.js +2 -2
  114. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +2 -2
  115. package/dist/openapi/models/ConfirmEmailChange200Response.js +2 -2
  116. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +2 -2
  117. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +2 -2
  118. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +2 -2
  119. package/dist/openapi/models/ConfirmEmailChangeRequest.js +2 -2
  120. package/dist/openapi/models/ConnectionSource.d.ts +2 -2
  121. package/dist/openapi/models/ConnectionSource.js +2 -2
  122. package/dist/openapi/models/ContactRequest.d.ts +2 -2
  123. package/dist/openapi/models/ContactRequest.js +2 -2
  124. package/dist/openapi/models/ContactSubject.d.ts +2 -2
  125. package/dist/openapi/models/ContactSubject.js +2 -2
  126. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +2 -2
  127. package/dist/openapi/models/ContactValidationErrorResponse.js +2 -2
  128. package/dist/openapi/models/CreateApiKey201Response.d.ts +2 -2
  129. package/dist/openapi/models/CreateApiKey201Response.js +2 -2
  130. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +2 -2
  131. package/dist/openapi/models/CreateApiKey201ResponseData.js +2 -2
  132. package/dist/openapi/models/CreateApiKeyRequest.d.ts +2 -2
  133. package/dist/openapi/models/CreateApiKeyRequest.js +2 -2
  134. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +2 -2
  135. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +2 -2
  136. package/dist/openapi/models/CreateExternalImport403Response.d.ts +2 -2
  137. package/dist/openapi/models/CreateExternalImport403Response.js +2 -2
  138. package/dist/openapi/models/CreateExternalImport422Response.d.ts +2 -2
  139. package/dist/openapi/models/CreateExternalImport422Response.js +2 -2
  140. package/dist/openapi/models/CreateWorkflow401Response.d.ts +14 -5
  141. package/dist/openapi/models/CreateWorkflow401Response.js +2 -2
  142. package/dist/openapi/models/CreateWorkflow403Response.d.ts +33 -0
  143. package/dist/openapi/models/CreateWorkflow403Response.js +57 -0
  144. package/dist/openapi/models/CreateWorkflow422Response.d.ts +2 -2
  145. package/dist/openapi/models/CreateWorkflow422Response.js +2 -2
  146. package/dist/openapi/models/CreditTransaction.d.ts +22 -12
  147. package/dist/openapi/models/CreditTransaction.js +2 -2
  148. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +2 -2
  149. package/dist/openapi/models/CreditTransactionSourceBucket.js +2 -2
  150. package/dist/openapi/models/CreditsBalanceResponse.d.ts +2 -2
  151. package/dist/openapi/models/CreditsBalanceResponse.js +2 -2
  152. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +2 -2
  153. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +2 -2
  154. package/dist/openapi/models/CreditsUsageResponse.d.ts +2 -2
  155. package/dist/openapi/models/CreditsUsageResponse.js +2 -2
  156. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +2 -2
  157. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +2 -2
  158. package/dist/openapi/models/Delivery.d.ts +2 -2
  159. package/dist/openapi/models/Delivery.js +2 -2
  160. package/dist/openapi/models/DeliveryOutputRef.d.ts +2 -2
  161. package/dist/openapi/models/DeliveryOutputRef.js +2 -2
  162. package/dist/openapi/models/DeliveryPlan.d.ts +2 -2
  163. package/dist/openapi/models/DeliveryPlan.js +2 -2
  164. package/dist/openapi/models/DeliveryPlanOutput.d.ts +2 -2
  165. package/dist/openapi/models/DeliveryPlanOutput.js +2 -2
  166. package/dist/openapi/models/DeliveryPlanReason.d.ts +2 -2
  167. package/dist/openapi/models/DeliveryPlanReason.js +2 -2
  168. package/dist/openapi/models/DeliverySelection.d.ts +2 -2
  169. package/dist/openapi/models/DeliverySelection.js +2 -2
  170. package/dist/openapi/models/DownloadBundle.d.ts +2 -2
  171. package/dist/openapi/models/DownloadBundle.js +2 -2
  172. package/dist/openapi/models/DroppedOption.d.ts +2 -2
  173. package/dist/openapi/models/DroppedOption.js +2 -2
  174. package/dist/openapi/models/EmailNotify.d.ts +2 -2
  175. package/dist/openapi/models/EmailNotify.js +2 -2
  176. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +2 -2
  177. package/dist/openapi/models/EmptySuccessEnvelope.js +2 -2
  178. package/dist/openapi/models/EndpointProjection.d.ts +2 -2
  179. package/dist/openapi/models/EndpointProjection.js +2 -2
  180. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +2 -2
  181. package/dist/openapi/models/EndpointProjectionServersInner.js +2 -2
  182. package/dist/openapi/models/ErrorEnvelope.d.ts +14 -5
  183. package/dist/openapi/models/ErrorEnvelope.js +2 -2
  184. package/dist/openapi/models/EstimateQuality.d.ts +2 -2
  185. package/dist/openapi/models/EstimateQuality.js +2 -2
  186. package/dist/openapi/models/EstimateRange.d.ts +2 -2
  187. package/dist/openapi/models/EstimateRange.js +2 -2
  188. package/dist/openapi/models/ExportAccountData200Response.d.ts +2 -2
  189. package/dist/openapi/models/ExportAccountData200Response.js +2 -2
  190. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +5 -4
  191. package/dist/openapi/models/ExportAccountData200ResponseData.js +5 -4
  192. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +36 -0
  193. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +42 -0
  194. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +58 -0
  195. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +62 -0
  196. package/dist/openapi/models/ExternalDestination.d.ts +2 -2
  197. package/dist/openapi/models/ExternalDestination.js +2 -2
  198. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +2 -2
  199. package/dist/openapi/models/ExternalImportCreatedResponse.js +2 -2
  200. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +2 -2
  201. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +2 -2
  202. package/dist/openapi/models/ExternalImportRequest.d.ts +2 -2
  203. package/dist/openapi/models/ExternalImportRequest.js +2 -2
  204. package/dist/openapi/models/ExternalImportToken.d.ts +2 -2
  205. package/dist/openapi/models/ExternalImportToken.js +2 -2
  206. package/dist/openapi/models/ExternalSource.d.ts +2 -2
  207. package/dist/openapi/models/ExternalSource.js +2 -2
  208. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +14 -5
  209. package/dist/openapi/models/FeatureNotAvailableResponse.js +2 -2
  210. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +14 -5
  211. package/dist/openapi/models/FeatureTierRestrictedResponse.js +2 -2
  212. package/dist/openapi/models/FeatureViolation.d.ts +2 -2
  213. package/dist/openapi/models/FeatureViolation.js +2 -2
  214. package/dist/openapi/models/GetProfile200Response.d.ts +2 -2
  215. package/dist/openapi/models/GetProfile200Response.js +2 -2
  216. package/dist/openapi/models/GetProfile200ResponseData.d.ts +2 -2
  217. package/dist/openapi/models/GetProfile200ResponseData.js +2 -2
  218. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +2 -2
  219. package/dist/openapi/models/ImageEncodeCapabilities.js +2 -2
  220. package/dist/openapi/models/JobDefinition.d.ts +2 -2
  221. package/dist/openapi/models/JobDefinition.js +2 -2
  222. package/dist/openapi/models/JobDownload.d.ts +2 -2
  223. package/dist/openapi/models/JobDownload.js +2 -2
  224. package/dist/openapi/models/JobInputV2.d.ts +2 -2
  225. package/dist/openapi/models/JobInputV2.js +2 -2
  226. package/dist/openapi/models/JobMediaClass.d.ts +2 -2
  227. package/dist/openapi/models/JobMediaClass.js +2 -2
  228. package/dist/openapi/models/JobOutputSource.d.ts +2 -2
  229. package/dist/openapi/models/JobOutputSource.js +2 -2
  230. package/dist/openapi/models/JobResponse.d.ts +2 -2
  231. package/dist/openapi/models/JobResponse.js +2 -2
  232. package/dist/openapi/models/JobStatus.d.ts +2 -2
  233. package/dist/openapi/models/JobStatus.js +2 -2
  234. package/dist/openapi/models/JobType.d.ts +2 -2
  235. package/dist/openapi/models/JobType.js +2 -2
  236. package/dist/openapi/models/LivenessResponse.d.ts +2 -2
  237. package/dist/openapi/models/LivenessResponse.js +2 -2
  238. package/dist/openapi/models/LoginUser200Response.d.ts +2 -2
  239. package/dist/openapi/models/LoginUser200Response.js +2 -2
  240. package/dist/openapi/models/LoginUser200ResponseData.d.ts +2 -2
  241. package/dist/openapi/models/LoginUser200ResponseData.js +2 -2
  242. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +2 -2
  243. package/dist/openapi/models/LoginUser200ResponseDataUser.js +2 -2
  244. package/dist/openapi/models/LoginUser401Response.d.ts +14 -5
  245. package/dist/openapi/models/LoginUser401Response.js +2 -2
  246. package/dist/openapi/models/LoginUserRequest.d.ts +2 -2
  247. package/dist/openapi/models/LoginUserRequest.js +2 -2
  248. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +14 -5
  249. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +2 -2
  250. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +2 -2
  251. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +2 -2
  252. package/dist/openapi/models/MetadataResponse.d.ts +2 -2
  253. package/dist/openapi/models/MetadataResponse.js +2 -2
  254. package/dist/openapi/models/MetadataResponseDimensions.d.ts +2 -2
  255. package/dist/openapi/models/MetadataResponseDimensions.js +2 -2
  256. package/dist/openapi/models/MetadataResponseExif.d.ts +2 -2
  257. package/dist/openapi/models/MetadataResponseExif.js +2 -2
  258. package/dist/openapi/models/MetadataResponseExifGps.d.ts +2 -2
  259. package/dist/openapi/models/MetadataResponseExifGps.js +2 -2
  260. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +2 -2
  261. package/dist/openapi/models/MetadataSuccessEnvelope.js +2 -2
  262. package/dist/openapi/models/MimeGroupSchema.d.ts +39 -3
  263. package/dist/openapi/models/MimeGroupSchema.js +12 -2
  264. package/dist/openapi/models/MultiInputSource.d.ts +2 -2
  265. package/dist/openapi/models/MultiInputSource.js +2 -2
  266. package/dist/openapi/models/MultipartCompleteRequest.d.ts +2 -2
  267. package/dist/openapi/models/MultipartCompleteRequest.js +2 -2
  268. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +2 -2
  269. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +2 -2
  270. package/dist/openapi/models/MultipartCompleteResponse.d.ts +2 -2
  271. package/dist/openapi/models/MultipartCompleteResponse.js +2 -2
  272. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +2 -2
  273. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +2 -2
  274. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +2 -2
  275. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +2 -2
  276. package/dist/openapi/models/MultipartInitiateResponse.d.ts +2 -2
  277. package/dist/openapi/models/MultipartInitiateResponse.js +2 -2
  278. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +2 -2
  279. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +2 -2
  280. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +2 -2
  281. package/dist/openapi/models/MultipartKeepaliveResponse.js +2 -2
  282. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +2 -2
  283. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +2 -2
  284. package/dist/openapi/models/MultipartPartListing.d.ts +2 -2
  285. package/dist/openapi/models/MultipartPartListing.js +2 -2
  286. package/dist/openapi/models/MultipartPresignRequest.d.ts +2 -2
  287. package/dist/openapi/models/MultipartPresignRequest.js +2 -2
  288. package/dist/openapi/models/MultipartPresignResponse.d.ts +2 -2
  289. package/dist/openapi/models/MultipartPresignResponse.js +2 -2
  290. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +2 -2
  291. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +2 -2
  292. package/dist/openapi/models/MultipartStatusResponse.d.ts +2 -2
  293. package/dist/openapi/models/MultipartStatusResponse.js +2 -2
  294. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +2 -2
  295. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +2 -2
  296. package/dist/openapi/models/NotifyConfig.d.ts +9 -5
  297. package/dist/openapi/models/NotifyConfig.js +2 -2
  298. package/dist/openapi/models/OperationCapability.d.ts +2 -2
  299. package/dist/openapi/models/OperationCapability.js +2 -2
  300. package/dist/openapi/models/OperationDefinition.d.ts +2 -2
  301. package/dist/openapi/models/OperationDefinition.js +2 -2
  302. package/dist/openapi/models/OperationDownload.d.ts +6 -2
  303. package/dist/openapi/models/OperationDownload.js +2 -2
  304. package/dist/openapi/models/OperationInputModel.d.ts +2 -2
  305. package/dist/openapi/models/OperationInputModel.js +2 -2
  306. package/dist/openapi/models/OperationMessageParamsValue.d.ts +25 -0
  307. package/dist/openapi/models/OperationMessageParamsValue.js +31 -0
  308. package/dist/openapi/models/OperationResponse.d.ts +36 -2
  309. package/dist/openapi/models/OperationResponse.js +8 -2
  310. package/dist/openapi/models/OperationResult.d.ts +2 -2
  311. package/dist/openapi/models/OperationResult.js +2 -2
  312. package/dist/openapi/models/OperationResultMetadata.d.ts +29 -3
  313. package/dist/openapi/models/OperationResultMetadata.js +6 -2
  314. package/dist/openapi/models/OperationResultMetrics.d.ts +4 -4
  315. package/dist/openapi/models/OperationResultMetrics.js +2 -2
  316. package/dist/openapi/models/OperationSchemaDefinition.d.ts +5 -6
  317. package/dist/openapi/models/OperationSchemaDefinition.js +2 -2
  318. package/dist/openapi/models/OperationStatus.d.ts +2 -2
  319. package/dist/openapi/models/OperationStatus.js +2 -2
  320. package/dist/openapi/models/OperationType.d.ts +10 -4
  321. package/dist/openapi/models/OperationType.js +10 -4
  322. package/dist/openapi/models/OperationsSchemaResponse.d.ts +2 -2
  323. package/dist/openapi/models/OperationsSchemaResponse.js +2 -2
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +2 -2
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +2 -2
  326. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +2 -2
  327. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +2 -2
  328. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +2 -2
  329. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +2 -2
  330. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +2 -2
  331. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +2 -2
  332. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +2 -2
  333. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +2 -2
  334. package/dist/openapi/models/OptionSchema.d.ts +40 -3
  335. package/dist/openapi/models/OptionSchema.js +10 -2
  336. package/dist/openapi/models/OutputProperties.d.ts +2 -2
  337. package/dist/openapi/models/OutputProperties.js +2 -2
  338. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +2 -2
  339. package/dist/openapi/models/OutputPropertiesIsAnimated.js +2 -2
  340. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +2 -2
  341. package/dist/openapi/models/PerClassAvailabilityEntry.js +2 -2
  342. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +2 -2
  343. package/dist/openapi/models/PerRoleCardinalityEntry.js +2 -2
  344. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +2 -2
  345. package/dist/openapi/models/PerValueAvailabilityEntry.js +2 -2
  346. package/dist/openapi/models/PresignedUrlPart.d.ts +2 -2
  347. package/dist/openapi/models/PresignedUrlPart.js +2 -2
  348. package/dist/openapi/models/ProbePendingResponse.d.ts +14 -5
  349. package/dist/openapi/models/ProbePendingResponse.js +2 -2
  350. package/dist/openapi/models/ProcessingClass.d.ts +2 -2
  351. package/dist/openapi/models/ProcessingClass.js +2 -2
  352. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +13 -2
  353. package/dist/openapi/models/ProcessingClassBandViolation.js +5 -2
  354. package/dist/openapi/models/ProcessingClassConstraints.d.ts +2 -2
  355. package/dist/openapi/models/ProcessingClassConstraints.js +2 -2
  356. package/dist/openapi/models/ProcessingClassEntry.d.ts +16 -2
  357. package/dist/openapi/models/ProcessingClassEntry.js +8 -2
  358. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +65 -0
  359. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +57 -0
  360. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +66 -0
  361. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +56 -0
  362. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +14 -5
  363. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +2 -2
  364. package/dist/openapi/models/ProcessingClassHint.d.ts +2 -2
  365. package/dist/openapi/models/ProcessingClassHint.js +2 -2
  366. package/dist/openapi/models/ProcessingClassReason.d.ts +2 -2
  367. package/dist/openapi/models/ProcessingClassReason.js +2 -2
  368. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +2 -2
  369. package/dist/openapi/models/ProcessingClassRejectReason.js +2 -2
  370. package/dist/openapi/models/ProcessingPlan.d.ts +2 -2
  371. package/dist/openapi/models/ProcessingPlan.js +2 -2
  372. package/dist/openapi/models/ProcessingPlanJob.d.ts +15 -2
  373. package/dist/openapi/models/ProcessingPlanJob.js +5 -2
  374. package/dist/openapi/models/ReEncodeDecision.d.ts +19 -8
  375. package/dist/openapi/models/ReEncodeDecision.js +19 -8
  376. package/dist/openapi/models/ReadinessResponse.d.ts +2 -2
  377. package/dist/openapi/models/ReadinessResponse.js +2 -2
  378. package/dist/openapi/models/RegisterUser422Response.d.ts +2 -2
  379. package/dist/openapi/models/RegisterUser422Response.js +2 -2
  380. package/dist/openapi/models/RegisterUserRequest.d.ts +2 -2
  381. package/dist/openapi/models/RegisterUserRequest.js +2 -2
  382. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +2 -2
  383. package/dist/openapi/models/RequestAccountDeletion200Response.js +2 -2
  384. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +2 -2
  385. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +2 -2
  386. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +2 -2
  387. package/dist/openapi/models/RequestAccountDeletionRequest.js +2 -2
  388. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +2 -2
  389. package/dist/openapi/models/ResendVerificationEmailRequest.js +2 -2
  390. package/dist/openapi/models/ResetPasswordRequest.d.ts +2 -2
  391. package/dist/openapi/models/ResetPasswordRequest.js +2 -2
  392. package/dist/openapi/models/ResolutionBand.d.ts +44 -0
  393. package/dist/openapi/models/ResolutionBand.js +62 -0
  394. package/dist/openapi/models/ResolutionBandCeiling.d.ts +68 -0
  395. package/dist/openapi/models/ResolutionBandCeiling.js +57 -0
  396. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +32 -0
  397. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +41 -0
  398. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +48 -0
  399. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +51 -0
  400. package/dist/openapi/models/ResponseEnvelope.d.ts +2 -2
  401. package/dist/openapi/models/ResponseEnvelope.js +2 -2
  402. package/dist/openapi/models/RetryResponse.d.ts +2 -2
  403. package/dist/openapi/models/RetryResponse.js +2 -2
  404. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +2 -2
  405. package/dist/openapi/models/RetrySuccessEnvelope.js +2 -2
  406. package/dist/openapi/models/SseCompletionBase.d.ts +2 -2
  407. package/dist/openapi/models/SseCompletionBase.js +2 -2
  408. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +14 -5
  409. package/dist/openapi/models/SseConnectionLimitResponse.js +2 -2
  410. package/dist/openapi/models/SseEventType.d.ts +2 -2
  411. package/dist/openapi/models/SseEventType.js +2 -2
  412. package/dist/openapi/models/SseJobCompletedData.d.ts +2 -2
  413. package/dist/openapi/models/SseJobCompletedData.js +2 -2
  414. package/dist/openapi/models/SseJobFailedData.d.ts +2 -2
  415. package/dist/openapi/models/SseJobFailedData.js +2 -2
  416. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +2 -2
  417. package/dist/openapi/models/SseMultiOutputCompletion.js +2 -2
  418. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +2 -2
  419. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +2 -2
  420. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +2 -2
  421. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +2 -2
  422. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +6 -2
  423. package/dist/openapi/models/SseMultiOutputResultEntry.js +2 -2
  424. package/dist/openapi/models/SseOperationCompletedData.d.ts +2 -2
  425. package/dist/openapi/models/SseOperationCompletedData.js +2 -2
  426. package/dist/openapi/models/SseOperationCompletionResult.d.ts +2 -2
  427. package/dist/openapi/models/SseOperationCompletionResult.js +2 -2
  428. package/dist/openapi/models/SseOperationFailedData.d.ts +33 -2
  429. package/dist/openapi/models/SseOperationFailedData.js +8 -2
  430. package/dist/openapi/models/SseOperationProgressData.d.ts +2 -2
  431. package/dist/openapi/models/SseOperationProgressData.js +2 -2
  432. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +2 -2
  433. package/dist/openapi/models/SseSingleOutputCompletion.js +2 -2
  434. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +2 -2
  435. package/dist/openapi/models/SseWorkflowTerminalData.js +2 -2
  436. package/dist/openapi/models/TierRestrictionKind.d.ts +2 -2
  437. package/dist/openapi/models/TierRestrictionKind.js +2 -2
  438. package/dist/openapi/models/TierRestrictionResponse.d.ts +14 -5
  439. package/dist/openapi/models/TierRestrictionResponse.js +2 -2
  440. package/dist/openapi/models/UpdateProfile200Response.d.ts +2 -2
  441. package/dist/openapi/models/UpdateProfile200Response.js +2 -2
  442. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +2 -2
  443. package/dist/openapi/models/UpdateProfile200ResponseData.js +2 -2
  444. package/dist/openapi/models/UpdateProfile422Response.d.ts +2 -2
  445. package/dist/openapi/models/UpdateProfile422Response.js +2 -2
  446. package/dist/openapi/models/UpdateProfileRequest.d.ts +2 -2
  447. package/dist/openapi/models/UpdateProfileRequest.js +2 -2
  448. package/dist/openapi/models/UploadConstraintsApplied.d.ts +2 -2
  449. package/dist/openapi/models/UploadConstraintsApplied.js +2 -2
  450. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +14 -5
  451. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +2 -2
  452. package/dist/openapi/models/UploadFile403Response.d.ts +2 -2
  453. package/dist/openapi/models/UploadFile403Response.js +2 -2
  454. package/dist/openapi/models/UploadFile422Response.d.ts +2 -2
  455. package/dist/openapi/models/UploadFile422Response.js +2 -2
  456. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +107 -2
  457. package/dist/openapi/models/UploadProbeMediaMetadata.js +36 -2
  458. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +4 -6
  459. package/dist/openapi/models/UploadProbeProcessingClass.js +4 -6
  460. package/dist/openapi/models/UploadProbeResponse.d.ts +2 -2
  461. package/dist/openapi/models/UploadProbeResponse.js +2 -2
  462. package/dist/openapi/models/UploadProbeStatus.d.ts +2 -2
  463. package/dist/openapi/models/UploadProbeStatus.js +2 -2
  464. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +2 -2
  465. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +2 -2
  466. package/dist/openapi/models/UploadResponse.d.ts +2 -2
  467. package/dist/openapi/models/UploadResponse.js +2 -2
  468. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +14 -5
  469. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +2 -2
  470. package/dist/openapi/models/UploadSource.d.ts +2 -2
  471. package/dist/openapi/models/UploadSource.js +2 -2
  472. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +2 -2
  473. package/dist/openapi/models/UploadSuccessEnvelope.js +2 -2
  474. package/dist/openapi/models/UploadThresholds.d.ts +2 -2
  475. package/dist/openapi/models/UploadThresholds.js +2 -2
  476. package/dist/openapi/models/UserTier.d.ts +2 -2
  477. package/dist/openapi/models/UserTier.js +2 -2
  478. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +19 -8
  479. package/dist/openapi/models/ValidationErrorEnvelope.js +2 -2
  480. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +2 -2
  481. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +2 -2
  482. package/dist/openapi/models/VerifyEmailRequest.d.ts +2 -2
  483. package/dist/openapi/models/VerifyEmailRequest.js +2 -2
  484. package/dist/openapi/models/WarningType.d.ts +2 -2
  485. package/dist/openapi/models/WarningType.js +2 -2
  486. package/dist/openapi/models/WebhookOperationContext.d.ts +2 -2
  487. package/dist/openapi/models/WebhookOperationContext.js +2 -2
  488. package/dist/openapi/models/WebhookPayload.d.ts +2 -2
  489. package/dist/openapi/models/WebhookPayload.js +2 -2
  490. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +2 -2
  491. package/dist/openapi/models/WorkflowArchiveResponse.js +2 -2
  492. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +2 -2
  493. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +2 -2
  494. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +7 -6
  495. package/dist/openapi/models/WorkflowCancelBillingEffect.js +7 -6
  496. package/dist/openapi/models/WorkflowCancelResponse.d.ts +2 -2
  497. package/dist/openapi/models/WorkflowCancelResponse.js +2 -2
  498. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +2 -2
  499. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +2 -2
  500. package/dist/openapi/models/WorkflowCreateRequest.d.ts +11 -14
  501. package/dist/openapi/models/WorkflowCreateRequest.js +2 -2
  502. package/dist/openapi/models/WorkflowCreateResponse.d.ts +2 -2
  503. package/dist/openapi/models/WorkflowCreateResponse.js +2 -2
  504. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +2 -2
  505. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +2 -2
  506. package/dist/openapi/models/WorkflowCreditSummary.d.ts +2 -2
  507. package/dist/openapi/models/WorkflowCreditSummary.js +2 -2
  508. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +2 -2
  509. package/dist/openapi/models/WorkflowDownloadResponse.js +2 -2
  510. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +2 -2
  511. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +2 -2
  512. package/dist/openapi/models/WorkflowEdge.d.ts +2 -2
  513. package/dist/openapi/models/WorkflowEdge.js +2 -2
  514. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +14 -5
  515. package/dist/openapi/models/WorkflowExpiredResponse.js +2 -2
  516. package/dist/openapi/models/WorkflowListResponse.d.ts +2 -2
  517. package/dist/openapi/models/WorkflowListResponse.js +2 -2
  518. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +2 -2
  519. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +2 -2
  520. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +18 -6
  521. package/dist/openapi/models/WorkflowPauseRequiredAction.js +19 -7
  522. package/dist/openapi/models/WorkflowPausedDetail.d.ts +6 -5
  523. package/dist/openapi/models/WorkflowPausedDetail.js +2 -2
  524. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +7 -5
  525. package/dist/openapi/models/WorkflowPausedDetailLinks.js +2 -2
  526. package/dist/openapi/models/WorkflowProcessing.d.ts +2 -2
  527. package/dist/openapi/models/WorkflowProcessing.js +2 -2
  528. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +2 -2
  529. package/dist/openapi/models/WorkflowRestoreResponse.js +2 -2
  530. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +2 -2
  531. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +2 -2
  532. package/dist/openapi/models/WorkflowResumeResponse.d.ts +2 -2
  533. package/dist/openapi/models/WorkflowResumeResponse.js +2 -2
  534. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +2 -2
  535. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +2 -2
  536. package/dist/openapi/models/WorkflowSource.d.ts +2 -2
  537. package/dist/openapi/models/WorkflowSource.js +2 -2
  538. package/dist/openapi/models/WorkflowStatus.d.ts +10 -5
  539. package/dist/openapi/models/WorkflowStatus.js +10 -5
  540. package/dist/openapi/models/WorkflowStatusResponse.d.ts +5 -3
  541. package/dist/openapi/models/WorkflowStatusResponse.js +2 -2
  542. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +2 -2
  543. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +2 -2
  544. package/dist/openapi/models/WorkflowSummary.d.ts +2 -2
  545. package/dist/openapi/models/WorkflowSummary.js +2 -2
  546. package/dist/openapi/models/WorkflowSummaryJob.d.ts +2 -2
  547. package/dist/openapi/models/WorkflowSummaryJob.js +2 -2
  548. package/dist/openapi/models/WorkflowWarning.d.ts +2 -2
  549. package/dist/openapi/models/WorkflowWarning.js +2 -2
  550. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +2 -2
  551. package/dist/openapi/models/WorkflowWarningSeverity.js +2 -2
  552. package/dist/openapi/models/index.d.ts +14 -0
  553. package/dist/openapi/models/index.js +14 -0
  554. package/dist/openapi/runtime.d.ts +2 -2
  555. package/dist/openapi/runtime.js +2 -2
  556. package/dist/operations/archive.metadata.js +1 -0
  557. package/dist/operations/audio_overlay.metadata.js +1 -0
  558. package/dist/operations/audio_to_video.metadata.js +1 -0
  559. package/dist/operations/audio_watermark.metadata.js +4 -9
  560. package/dist/operations/custom_luma.metadata.js +1 -0
  561. package/dist/operations/image_watermark.metadata.js +1 -0
  562. package/dist/operations/merge.metadata.js +1 -0
  563. package/dist/operations/metadata-types.d.ts +2 -0
  564. package/dist/operations/split.metadata.js +12 -3
  565. package/dist/operations/text_watermark.metadata.js +1 -0
  566. package/dist/operations/video_text_watermark.metadata.js +2 -0
  567. package/dist/operations/video_watermark.metadata.js +1 -0
  568. package/openapi/README.md +1 -1
  569. package/openapi/api.yaml +1089 -172
  570. package/operation-capabilities/operation-capabilities.json +129 -1
  571. package/operations/schemas/audio_watermark.yaml +34 -33
  572. package/operations/schemas/compress.yaml +295 -177
  573. package/operations/schemas/convert.yaml +11 -0
  574. package/operations/schemas/merge.yaml +35 -1
  575. package/operations/schemas/split.yaml +144 -88
  576. package/operations/schemas/thumbnail.yaml +34 -26
  577. package/operations/schemas/video_text_watermark.yaml +112 -47
  578. package/operations/schemas/video_watermark.yaml +33 -28
  579. package/package.json +3 -3
@@ -83,11 +83,14 @@ operation:
83
83
  # SVG (SVGO) re-encode from pixels so `keep` is NOT in their enum (worker
84
84
  # would reject it). metadata `all` (strip) is the universal default.
85
85
  #
86
- # Still availability:planned (ANTI-REGRESSION — no stable-flip until worker-
87
- # proven; plan §2.5):
88
- # lossy (png) -> palette quantization (pngquant/imagequant-class); planned +
89
- # licensing-gated by the lambdas spike — do NOT stable-flip until that
90
- # confirms a permissive path.
86
+ # lossy (png) -> palette quantization (imagequant via libcaesium): STABLE
87
+ # (owner decision 2026-09-24 21:20, option B on lambdas card 4azmqbm6). It
88
+ # was already what production served: the worker never sets
89
+ # `png.optimize`, so libcaesium 0.20.0 takes `lossy()` on EVERY PNG compress
90
+ # (png.rs compress_in_memory) and the lossless oxipng path is unreachable.
91
+ # This text previously called it planned and licensing-gated; the owner
92
+ # accepts the licensing reading (imagequant GPL-3, server-side use only —
93
+ # see the image_png provenance note below).
91
94
  image_jpeg:
92
95
  mimes:
93
96
  - image/jpeg
@@ -191,15 +194,23 @@ operation:
191
194
  per_value_availability:
192
195
  auto: { availability: planned }
193
196
  smallest: { availability: planned }
197
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
198
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
199
+ # Output format. original = keep input format (default); webp = recompress to WebP.
200
+ # Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the convert operation.
201
+ # `auto` / `smallest` are PLANNED auto-format directives — the server encodes to several
202
+ # candidate formats and returns the best (`auto` = the most suitable; `smallest` = the
203
+ # absolute fewest bytes), reporting the chosen format via the result `mime_type`. They
204
+ # are selection strategies, not concrete targets, and stay `planned` until supported.
205
+ # See FORMAT.md.
194
206
  description: >-
195
207
  Output format. original = keep input format (default); webp = recompress to
196
208
  WebP. Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the
197
- convert operation. `auto` / `smallest` are PLANNED auto-format directives —
198
- the server encodes to several candidate formats and returns the best
199
- (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
200
- reporting the chosen format via the result `mime_type`. They are selection
201
- strategies, not concrete targets, and stay `planned` until supported. See
202
- FORMAT.md.
209
+ convert operation. `auto` / `smallest` are PLANNED auto-format directives — the
210
+ server encodes to several candidate formats and returns the best (`auto` = the
211
+ most suitable; `smallest` = the absolute fewest bytes), reporting the chosen
212
+ format via the result `mime_type`. They are selection strategies, not concrete
213
+ targets, and stay `planned` until supported.
203
214
  lossless:
204
215
  type: boolean
205
216
  default: false
@@ -285,14 +296,22 @@ operation:
285
296
  max: 100
286
297
  default: 80
287
298
  honored_on: [same_format]
299
+ # AUTHOR NOTES (4azmqbm6, 2026-09-24). The old text said `quality: 100`
300
+ # keeps the PNG lossless. It never did: libcaesium 0.20.0 png.rs runs
301
+ # imagequant (`liq.set_quality(0, quality)`, quantize, remap to a
302
+ # palette) for every value, because the worker never sets
303
+ # `png.optimize`. A PNG with more than 256 colours therefore loses
304
+ # colours even at 100. Owner option B keeps that behaviour and states it.
305
+ # Frontend's "Best-Quality PNG lossless" (BhVwdlhQ) relied on the old
306
+ # sentence and was told.
288
307
  description: >-
289
- Compression quality (1-100). For PNG this is the SINGLE lossy/lossless
290
- control: `quality` < 100 applies lossy palette quantization (the value is
291
- the quantization level), while `quality: 100` keeps the PNG lossless
292
- (lossless optimisation only — tune the lossless effort via
293
- `optimization_level`). 1 = smallest file, 100 = best quality / lossless.
294
- There is no separate lossy/lossless toggle for PNG — it is purely
295
- quality-driven.
308
+ Compression quality (1-100). PNG compression reduces the image to a
309
+ palette of at most 256 colours at every quality setting; this is what
310
+ makes PNGs smaller. 1 = smallest file, 100 = closest to the original.
311
+ No value is guaranteed lossless, including 100: when an image with
312
+ more than 256 colours (a photo, a gradient) is made smaller, it loses
313
+ some colour detail. If compressing would not make the file smaller,
314
+ the original is returned unchanged.
296
315
  metadata:
297
316
  type: enum
298
317
  values: [strip, keep, all]
@@ -315,8 +334,12 @@ operation:
315
334
  min: 0
316
335
  max: 6
317
336
  default: 3
318
- honored_on: [same_format]
319
- description: "PNG optimization effort (0-6). Higher = smaller file, slower encode. Default 3."
337
+ honored_on: [] # ACCEPTED BUT INERT (Nqd3TdC6): honoured on no route; FORMAT.md §honored_on
338
+ # AUTHOR NOTES (4azmqbm6, 2026-09-24): read only by libcaesium's lossless
339
+ # (oxipng) path, which compress never takes (see `quality`). Kept so a
340
+ # request that sends it is still accepted; it changes nothing.
341
+ description: >-
342
+ Currently has no effect on PNG output: it is accepted and ignored.
320
343
  output_format:
321
344
  type: enum
322
345
  values: [original, webp, auto, smallest]
@@ -324,15 +347,23 @@ operation:
324
347
  per_value_availability:
325
348
  auto: { availability: planned }
326
349
  smallest: { availability: planned }
350
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
351
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
352
+ # Output format. original = keep input format (default); webp = recompress to WebP.
353
+ # Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the convert operation.
354
+ # `auto` / `smallest` are PLANNED auto-format directives — the server encodes to several
355
+ # candidate formats and returns the best (`auto` = the most suitable; `smallest` = the
356
+ # absolute fewest bytes), reporting the chosen format via the result `mime_type`. They
357
+ # are selection strategies, not concrete targets, and stay `planned` until supported.
358
+ # See FORMAT.md.
327
359
  description: >-
328
360
  Output format. original = keep input format (default); webp = recompress to
329
361
  WebP. Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the
330
- convert operation. `auto` / `smallest` are PLANNED auto-format directives —
331
- the server encodes to several candidate formats and returns the best
332
- (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
333
- reporting the chosen format via the result `mime_type`. They are selection
334
- strategies, not concrete targets, and stay `planned` until supported. See
335
- FORMAT.md.
362
+ convert operation. `auto` / `smallest` are PLANNED auto-format directives — the
363
+ server encodes to several candidate formats and returns the best (`auto` = the
364
+ most suitable; `smallest` = the absolute fewest bytes), reporting the chosen
365
+ format via the result `mime_type`. They are selection strategies, not concrete
366
+ targets, and stay `planned` until supported.
336
367
  width:
337
368
  type: integer
338
369
  min: 1
@@ -395,10 +426,9 @@ operation:
395
426
  # image/heic is intentionally NOT a compress input: compress is decode-only
396
427
  # and there is no HEIC encoder, so the worker rejects a declared image/heic
397
428
  # (FormatMismatch). heic stays on convert+thumbnail.
398
- # WORKER LIMIT (not yet contract-expressible — F3 follow-up): the
399
- # compress-image worker caps avif INPUT at 20MB (compression_processor.rs),
400
- # below the general image size budget. Per-MIME input-size caps have no
401
- # contract vocab today; tracked for the image-size-cap mechanism (F3).
429
+ # WORKER LIMIT: the compress-image worker caps avif INPUT at 20 MiB
430
+ # (compression_processor.rs AVIF_MAX_MB), below the general image size
431
+ # budget. This group's `max_input_size_bytes` declares it.
402
432
  mimes:
403
433
  - image/avif
404
434
  max_output_pixels: 16000000
@@ -487,15 +517,23 @@ operation:
487
517
  per_value_availability:
488
518
  auto: { availability: planned }
489
519
  smallest: { availability: planned }
520
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
521
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
522
+ # Output format. original = keep input format (default); webp = recompress to WebP.
523
+ # Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the convert operation.
524
+ # `auto` / `smallest` are PLANNED auto-format directives — the server encodes to several
525
+ # candidate formats and returns the best (`auto` = the most suitable; `smallest` = the
526
+ # absolute fewest bytes), reporting the chosen format via the result `mime_type`. They
527
+ # are selection strategies, not concrete targets, and stay `planned` until supported.
528
+ # See FORMAT.md.
490
529
  description: >-
491
530
  Output format. original = keep input format (default); webp = recompress to
492
531
  WebP. Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the
493
- convert operation. `auto` / `smallest` are PLANNED auto-format directives —
494
- the server encodes to several candidate formats and returns the best
495
- (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
496
- reporting the chosen format via the result `mime_type`. They are selection
497
- strategies, not concrete targets, and stay `planned` until supported. See
498
- FORMAT.md.
532
+ convert operation. `auto` / `smallest` are PLANNED auto-format directives — the
533
+ server encodes to several candidate formats and returns the best (`auto` = the
534
+ most suitable; `smallest` = the absolute fewest bytes), reporting the chosen
535
+ format via the result `mime_type`. They are selection strategies, not concrete
536
+ targets, and stay `planned` until supported.
499
537
  width:
500
538
  type: integer
501
539
  min: 1
@@ -643,15 +681,23 @@ operation:
643
681
  per_value_availability:
644
682
  auto: { availability: planned }
645
683
  smallest: { availability: planned }
684
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
685
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
686
+ # Output format. original = keep input format (default); webp = recompress to WebP.
687
+ # Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the convert operation.
688
+ # `auto` / `smallest` are PLANNED auto-format directives — the server encodes to several
689
+ # candidate formats and returns the best (`auto` = the most suitable; `smallest` = the
690
+ # absolute fewest bytes), reporting the chosen format via the result `mime_type`. They
691
+ # are selection strategies, not concrete targets, and stay `planned` until supported.
692
+ # See FORMAT.md.
646
693
  description: >-
647
694
  Output format. original = keep input format (default); webp = recompress to
648
695
  WebP. Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the
649
- convert operation. `auto` / `smallest` are PLANNED auto-format directives —
650
- the server encodes to several candidate formats and returns the best
651
- (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
652
- reporting the chosen format via the result `mime_type`. They are selection
653
- strategies, not concrete targets, and stay `planned` until supported. See
654
- FORMAT.md.
696
+ convert operation. `auto` / `smallest` are PLANNED auto-format directives — the
697
+ server encodes to several candidate formats and returns the best (`auto` = the
698
+ most suitable; `smallest` = the absolute fewest bytes), reporting the chosen
699
+ format via the result `mime_type`. They are selection strategies, not concrete
700
+ targets, and stay `planned` until supported.
655
701
  lossless:
656
702
  type: boolean
657
703
  default: false
@@ -805,31 +851,32 @@ operation:
805
851
  per_value_availability:
806
852
  auto: { availability: planned }
807
853
  smallest: { availability: planned }
854
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
855
+ # 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
856
+ # Output format. `original` = keep input format — SVG -> SVG optimisation via SVGO.
857
+ # **STABLE and working** (restored 2026-07-21, G9O6yrQD; worker-proven on staging job
858
+ # 019f6aa3-d275-7b10-a5cf-58acc705c7e2 at 24.5% reduction, Form-A attested in lambdas
859
+ # #325). It is also the schema `default`, so a bare `compress` on an SVG takes this
860
+ # route. Optimisation is **visually preserving, NOT lossless** — SVGO's `preset-default`
861
+ # includes `convertPathData`, which rounds path coordinates within a tolerance. NOTE for
862
+ # anyone re-reading history here: this value was `planned` from 2026-07-17 to 2026-07-21
863
+ # on a false premise, and because the API materializes an omitted default before the
864
+ # availability gate (api 4a7a2628), that tag 422'd EVERY website SVG compress at create
865
+ # — the workbench does not send `output_format`, so the defaulted path is the only path
866
+ # a customer has. A `planned` DEFAULT is therefore never a partial restriction; it is a
867
+ # total one. Weigh that before tagging any future default `planned`. `webp` = recompress
868
+ # to WebP: **STABLE and working today** — this facade route canonicalizes to the
869
+ # `convert` operation (`convert.image_svg` carries its own quality), which is why this
870
+ # group is NOT gated at group level. Concrete format changes are handled by the convert
871
+ # operation. `auto` / `smallest` are PLANNED auto-format directives (the server picks
872
+ # the best/smallest candidate format, reported via the result `mime_type`) — selection
873
+ # strategies, not concrete targets, planned until supported. See FORMAT.md.
808
874
  description: >-
809
- Output format. `original` = keep input format — SVG -> SVG optimisation
810
- via SVGO. **STABLE and working** (restored 2026-07-21, G9O6yrQD;
811
- worker-proven on staging job 019f6aa3-d275-7b10-a5cf-58acc705c7e2 at
812
- 24.5% reduction, Form-A attested in lambdas #325). It is also the schema
813
- `default`, so a bare `compress` on an SVG takes this route.
814
- Optimisation is **visually preserving, NOT lossless** — SVGO's
815
- `preset-default` includes `convertPathData`, which rounds path
816
- coordinates within a tolerance.
817
- NOTE for anyone re-reading history here: this value was `planned` from
818
- 2026-07-17 to 2026-07-21 on a false premise, and because the API
819
- materializes an omitted default before the availability gate (api
820
- 4a7a2628), that tag 422'd EVERY website SVG compress at create — the
821
- workbench does not send `output_format`, so the defaulted path is the
822
- only path a customer has. A `planned` DEFAULT is therefore never a
823
- partial restriction; it is a total one. Weigh that before tagging any
824
- future default `planned`.
825
- `webp` = recompress to WebP: **STABLE and working today** — this facade
826
- route canonicalizes to the `convert` operation (`convert.image_svg` carries
827
- its own quality), which is why this group is NOT gated at group level.
828
- Concrete format changes are handled by the convert operation. `auto` /
829
- `smallest` are PLANNED auto-format directives (the server picks the
830
- best/smallest candidate format, reported via the result `mime_type`) —
831
- selection strategies, not concrete targets, planned until supported. See
832
- FORMAT.md.
875
+ Output format. `original` (the default) keeps SVG and optimises it; the
876
+ result looks the same but is not byte-for-byte lossless — path coordinates
877
+ are rounded within a small tolerance. `webp` converts the image to WebP.
878
+ `auto` and `smallest` (let the server pick the best or smallest format)
879
+ are planned and not yet available.
833
880
 
834
881
  # gif/tiff: raster Resize is engine-proven (both are in thumbnail-images), but
835
882
  # the optimiser `lossless` knob is WebP-only — not advertised here.
@@ -846,9 +893,19 @@ operation:
846
893
  max: 100
847
894
  default: 80
848
895
  honored_on: [same_format]
896
+ # AUTHOR NOTES (IJofpQLI, 2026-09-24): lambdas' proof audit found the
897
+ # TIFF path (libcaesium 0.20.0 tiff.rs:98-100) takes only the algorithm
898
+ # and deflate level; quality is not an input, so it is IGNORED for
899
+ # image/tiff. Stated so the ignore is not silent. The structural fix
900
+ # (split this group into image_gif + image_tiff, the latter without
901
+ # quality) changes a group key consumers read, so it waits on a
902
+ # coordinated decision; the card stays open for it.
849
903
  description: >-
850
904
  Compression quality (1 = smallest file, 100 = best quality). For animated
851
905
  GIF this is honoured but real-world size reduction is typically small.
906
+ Ignored when a TIFF stays a TIFF: it is re-encoded losslessly, so this
907
+ setting has no effect on a TIFF output. It does apply when a TIFF is
908
+ converted to another format (for example WebP).
852
909
  metadata:
853
910
  type: enum
854
911
  values: [strip, keep, all]
@@ -873,15 +930,23 @@ operation:
873
930
  per_value_availability:
874
931
  auto: { availability: planned }
875
932
  smallest: { availability: planned }
933
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
934
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
935
+ # Output format. original = keep input format (default); webp = recompress to WebP.
936
+ # Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the convert operation.
937
+ # `auto` / `smallest` are PLANNED auto-format directives — the server encodes to several
938
+ # candidate formats and returns the best (`auto` = the most suitable; `smallest` = the
939
+ # absolute fewest bytes), reporting the chosen format via the result `mime_type`. They
940
+ # are selection strategies, not concrete targets, and stay `planned` until supported.
941
+ # See FORMAT.md.
876
942
  description: >-
877
943
  Output format. original = keep input format (default); webp = recompress to
878
944
  WebP. Concrete format changes (jpeg/png/avif/gif/tiff) are handled by the
879
- convert operation. `auto` / `smallest` are PLANNED auto-format directives —
880
- the server encodes to several candidate formats and returns the best
881
- (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
882
- reporting the chosen format via the result `mime_type`. They are selection
883
- strategies, not concrete targets, and stay `planned` until supported. See
884
- FORMAT.md.
945
+ convert operation. `auto` / `smallest` are PLANNED auto-format directives — the
946
+ server encodes to several candidate formats and returns the best (`auto` = the
947
+ most suitable; `smallest` = the absolute fewest bytes), reporting the chosen
948
+ format via the result `mime_type`. They are selection strategies, not concrete
949
+ targets, and stay `planned` until supported.
885
950
  width:
886
951
  type: integer
887
952
  min: 1
@@ -961,10 +1026,14 @@ operation:
961
1026
  # convert.audio worker live) so the per_value_availability block is
962
1027
  # removed => untagged = stable (ADR-0001 §1.4). Values mirror
963
1028
  # convert.audio.output_format.
1029
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1030
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
1031
+ # Output audio format. original = keep input format (default, same-format compression).
1032
+ # Non-`original` values re-target the container/codec via the API "compress+format"
1033
+ # facade (one canonicalized convert pass); see FORMAT.md.
964
1034
  description: >-
965
1035
  Output audio format. original = keep input format (default, same-format
966
- compression). Non-`original` values re-target the container/codec via the
967
- API "compress+format" facade (one canonicalized convert pass); see FORMAT.md.
1036
+ compression). Other values change the format as part of the same job.
968
1037
  bitrate:
969
1038
  type: enum
970
1039
  value_type: integer
@@ -1084,30 +1153,45 @@ operation:
1084
1153
  mp4: { availability: planned }
1085
1154
  webm: { availability: planned }
1086
1155
  ogg: { availability: planned }
1156
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1157
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
1158
+ # Output container. original = keep the input container (default, same-format
1159
+ # compression). Non-`original` values re-target the container via the API
1160
+ # "compress+format" facade (one canonicalized convert-with-size-cap pass); see
1161
+ # FORMAT.md. When set, the RESOLVED target container determines the valid
1162
+ # codec/audio_codec/faststart sets — an absent/default codec resolves to a
1163
+ # container-valid one (e.g. webm -> vp9) and is never rejected; only a caller-EXPLICIT
1164
+ # incompatible value is rejected.
1087
1165
  description: >-
1088
- Output container. original = keep the input container (default,
1089
- same-format compression). Non-`original` values re-target the
1090
- container via the API "compress+format" facade (one canonicalized
1091
- convert-with-size-cap pass); see FORMAT.md. When set, the RESOLVED
1092
- target container determines the valid codec/audio_codec/faststart
1093
- sets — an absent/default codec resolves to a container-valid one
1094
- (e.g. webm -> vp9) and is never rejected; only a caller-EXPLICIT
1095
- incompatible value is rejected.
1166
+ Output container. original = keep the input container (default, same-format
1167
+ compression). Other values change the container as part of the same job, keeping
1168
+ the size cap. When set, the RESOLVED target container determines the valid
1169
+ codec/audio_codec/faststart sets — an absent/default codec resolves to a
1170
+ container-valid one (e.g. webm -> vp9) and is never rejected; only a
1171
+ caller-EXPLICIT incompatible value is rejected.
1096
1172
  codec:
1097
1173
  type: enum
1098
1174
  values: [h264, h265, vp9, av1]
1099
1175
  default: h264
1100
- description: >
1101
- Video codec. h264 = widest compatibility, h265/av1 = better
1102
- compression but slower. The default (h264) is the MP4/MOV standard
1103
- and is CONTAINER-CONDITIONAL against the RESOLVED output container
1104
- (the explicit `output_format` if set, else the input container): for
1105
- a container that cannot carry it (e.g. WebM, which carries VP8/VP9/
1106
- AV1) the server resolves a container-valid codec (WebM -> vp9). A
1107
- DEFAULT value is never rejected — including an explicit
1108
- `output_format: webm` left at the default `h264` (resolves to vp9,
1109
- not rejected); only a caller-EXPLICIT incompatible codec is rejected.
1110
- See FORMAT.md "Container-conditional defaults".
1176
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1177
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
1178
+ # Video codec. h264 = widest compatibility, h265/av1 = better compression but slower.
1179
+ # The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL against the
1180
+ # RESOLVED output container (the explicit `output_format` if set, else the input
1181
+ # container): for a container that cannot carry it (e.g. WebM, which carries VP8/VP9/
1182
+ # AV1) the server resolves a container-valid codec (WebM -> vp9). A DEFAULT value is
1183
+ # never rejected — including an explicit `output_format: webm` left at the default
1184
+ # `h264` (resolves to vp9, not rejected); only a caller-EXPLICIT incompatible codec is
1185
+ # rejected. See FORMAT.md "Container-conditional defaults".
1186
+ description: >-
1187
+ Video codec. h264 = widest compatibility, h265/av1 = better compression but
1188
+ slower. The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL
1189
+ against the RESOLVED output container (the explicit `output_format` if set, else
1190
+ the input container): for a container that cannot carry it (e.g. WebM, which
1191
+ carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9).
1192
+ A DEFAULT value is never rejected — including an explicit `output_format: webm`
1193
+ left at the default `h264` (resolves to vp9, not rejected); only a
1194
+ caller-EXPLICIT incompatible codec is rejected.
1111
1195
  encoding_mode:
1112
1196
  type: enum
1113
1197
  values: [crf, target_size]
@@ -1121,38 +1205,48 @@ operation:
1121
1205
  # per-value-availability tag: option availability is binary and cannot be
1122
1206
  # output-container-scoped (same cross-axis limitation as
1123
1207
  # compress.audio.bitrate's lossy-output rule). crf is universal. ADR-0023 D8.
1124
- description: |
1125
- `crf` = constant quality. `target_size` = constrained output file size
1126
- (two-pass). `target_size` is LIVE for mp4/MOV output; for webm/ogg output
1127
- and long-form the server returns `feature_not_available` (use `crf` there)
1128
- until two-pass for this container ships.
1129
-
1130
- 🔴 **`crf` DOES NOT MEAN UNCONSTRAINED FILE SIZE. THIS DESCRIPTION USED TO
1131
- SAY "variable file size" AND THAT WAS FALSE BY OMISSION.** For **mp4/MOV
1132
- output**, the worker additionally derives a **source-relative peak-bitrate
1133
- ceiling of roughly 60% of the source video bitrate** (`-maxrate`/`-bufsize`),
1134
- and **it binds regardless of an explicit `crf`** — constrained-CRF. The `crf`
1135
- value is still honoured as the **quality ceiling**; the cap adds a peak
1136
- ceiling on top of it.
1137
-
1138
- ⚠️ **Scope, because "we cap every video" would be a second false sentence:**
1139
- the cap is **mp4/MOV only** — WebM/VP9 discards it and skips the probe
1140
- entirely — and it is **best-effort**, so an unprobeable source gets no cap.
1141
-
1142
- ⭐ **Why it exists, which is also why the old wording surprised in the wrong
1143
- direction:** plain CRF alone **INFLATES already-efficient sources** — an
1144
- efficient HEVC re-encoded to H.264 at CRF 23/25/30 grows. The compress
1145
- contract is *reduce file size*, so the cap is what makes shrinking reliable.
1146
- A caller who deliberately pins a low `crf` on an efficient source therefore
1147
- gets a constrained-CRF transcode rather than a byte-for-byte original: a
1148
- deliberate, accepted shift.
1149
-
1150
- 🔴 **THIS DESCRIPTION IS BOUND TO THE WORKER, NOT DATED AGAINST IT.**
1151
- `tests/test_bitrate_cap_disclosure_matches_the_worker.py` reads
1152
- `compression_lambdas` at `origin/main` and fails if the cap stops
1153
- being source-relative, stops being mp4/MOV-only, or stops deriving
1154
- from a source probe. **An as-of date would make a superseded
1155
- sentence look deliberate**; a gate makes it go red instead.
1208
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1209
+ # 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
1210
+ # `crf` = constant quality. `target_size` = constrained output file size
1211
+ # (two-pass). `target_size` is LIVE for mp4/MOV output; for webm/ogg output
1212
+ # and long-form the server returns `feature_not_available` (use `crf` there)
1213
+ # until two-pass for this container ships.
1214
+ #
1215
+ # 🔴 **`crf` DOES NOT MEAN UNCONSTRAINED FILE SIZE. THIS DESCRIPTION USED TO
1216
+ # SAY "variable file size" AND THAT WAS FALSE BY OMISSION.** For **mp4/MOV
1217
+ # output**, the worker additionally derives a **source-relative peak-bitrate
1218
+ # ceiling of roughly 60% of the source video bitrate** (`-maxrate`/`-bufsize`),
1219
+ # and **it binds regardless of an explicit `crf`** — constrained-CRF. The `crf`
1220
+ # value is still honoured as the **quality ceiling**; the cap adds a peak
1221
+ # ceiling on top of it.
1222
+ #
1223
+ # ⚠️ **Scope, because "we cap every video" would be a second false sentence:**
1224
+ # the cap is **mp4/MOV only** — WebM/VP9 discards it and skips the probe
1225
+ # entirely — and it is **best-effort**, so an unprobeable source gets no cap.
1226
+ #
1227
+ # ⭐ **Why it exists, which is also why the old wording surprised in the wrong
1228
+ # direction:** plain CRF alone **INFLATES already-efficient sources** — an
1229
+ # efficient HEVC re-encoded to H.264 at CRF 23/25/30 grows. The compress
1230
+ # contract is *reduce file size*, so the cap is what makes shrinking reliable.
1231
+ # A caller who deliberately pins a low `crf` on an efficient source therefore
1232
+ # gets a constrained-CRF transcode rather than a byte-for-byte original: a
1233
+ # deliberate, accepted shift.
1234
+ #
1235
+ # 🔴 **THIS DESCRIPTION IS BOUND TO THE WORKER, NOT DATED AGAINST IT.**
1236
+ # `tests/test_bitrate_cap_disclosure_matches_the_worker.py` reads
1237
+ # `compression_lambdas` at `origin/main` and fails if the cap stops
1238
+ # being source-relative, stops being mp4/MOV-only, or stops deriving
1239
+ # from a source probe. **An as-of date would make a superseded
1240
+ # sentence look deliberate**; a gate makes it go red instead.
1241
+ description: >-
1242
+ `crf` = constant quality. `target_size` = aim for a specific output file
1243
+ size (two-pass); available for mp4/MOV output only — for webm/ogg output
1244
+ and long-form video it is refused with `feature_not_available` (use
1245
+ `crf`). With `crf` on mp4/MOV output the file size is still bounded: a
1246
+ source-relative peak-bitrate ceiling (about 60% of the source video
1247
+ bitrate) keeps already-efficient sources from growing. That ceiling is
1248
+ mp4/MOV only and best-effort — it is skipped when the source bitrate
1249
+ cannot be read.
1156
1250
  crf:
1157
1251
  type: integer
1158
1252
  min: 0
@@ -1176,37 +1270,44 @@ operation:
1176
1270
  type: enum
1177
1271
  values: [ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow]
1178
1272
  default: medium
1179
- description: |
1180
- x264/x265 encoder effort. **A SIZE LEVER, CONDITIONALLY** — it moves
1181
- output size **only while the mp4/MOV peak-bitrate cap is NOT binding.**
1182
-
1183
- **Measured by `compression_lambdas`, medium vs slow, all else held:**
1184
-
1185
- crf 30, cap inert 1,220,156 vs 1,144,043 bytes 6.2% apart
1186
- crf 18, cap binding 2,514,788 vs 2,516,986 bytes 0.09% apart
1187
-
1188
- 🔴 **THE MECHANISM IS MECHANICAL, NOT EMPIRICAL, AND EXPLAINS BOTH ROWS.**
1189
- In pure CRF the encoder targets constant QUALITY, so a slower preset spends
1190
- its extra effort producing a **smaller file at the same quality**. Once
1191
- `-maxrate` binds the encode is rate-limited, so the extra effort can only go
1192
- into **picture at a fixed size** — an axis a size measurement cannot see.
1193
-
1194
- ⚠️ **This description previously said `preset` was effort-only and that `crf`
1195
- was the size lever. That was wrong**, and it was wrong because a 0.09% figure
1196
- measured on a **cap-binding** clip was generalised into a property of `preset`.
1197
- **A measurement is not a property until you know what held it.**
1198
-
1199
- ⇒ **Callers optimising for size:** `crf` is the primary lever; `preset` adds
1200
- real reduction **only when the cap is not already constraining the encode** —
1201
- which is exactly the high-`crf`, small-output end. See `encoding_mode` for what
1202
- the cap is and when it applies.
1203
-
1204
- ⚠️ **What the extra effort buys once the cap DOES bind is mechanically
1205
- implied and empirically UNCONFIRMED.** The mechanism says it must go
1206
- into picture; `compression_lambdas` could not see a difference on 2x
1207
- crops, but that was **one frame of one 5-second clip**, and preset
1208
- differences concentrate in high-motion frames that were not
1209
- deliberately sampled. **Recorded as unestablished, not asserted.**
1273
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1274
+ # 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
1275
+ # x264/x265 encoder effort. **A SIZE LEVER, CONDITIONALLY** — it moves
1276
+ # output size **only while the mp4/MOV peak-bitrate cap is NOT binding.**
1277
+ #
1278
+ # **Measured by `compression_lambdas`, medium vs slow, all else held:**
1279
+ #
1280
+ # crf 30, cap inert 1,220,156 vs 1,144,043 bytes 6.2% apart
1281
+ # crf 18, cap binding 2,514,788 vs 2,516,986 bytes 0.09% apart
1282
+ #
1283
+ # 🔴 **THE MECHANISM IS MECHANICAL, NOT EMPIRICAL, AND EXPLAINS BOTH ROWS.**
1284
+ # In pure CRF the encoder targets constant QUALITY, so a slower preset spends
1285
+ # its extra effort producing a **smaller file at the same quality**. Once
1286
+ # `-maxrate` binds the encode is rate-limited, so the extra effort can only go
1287
+ # into **picture at a fixed size** — an axis a size measurement cannot see.
1288
+ #
1289
+ # ⚠️ **This description previously said `preset` was effort-only and that `crf`
1290
+ # was the size lever. That was wrong**, and it was wrong because a 0.09% figure
1291
+ # measured on a **cap-binding** clip was generalised into a property of `preset`.
1292
+ # **A measurement is not a property until you know what held it.**
1293
+ #
1294
+ # ⇒ **Callers optimising for size:** `crf` is the primary lever; `preset` adds
1295
+ # real reduction **only when the cap is not already constraining the encode** —
1296
+ # which is exactly the high-`crf`, small-output end. See `encoding_mode` for what
1297
+ # the cap is and when it applies.
1298
+ #
1299
+ # ⚠️ **What the extra effort buys once the cap DOES bind is mechanically
1300
+ # implied and empirically UNCONFIRMED.** The mechanism says it must go
1301
+ # into picture; `compression_lambdas` could not see a difference on 2x
1302
+ # crops, but that was **one frame of one 5-second clip**, and preset
1303
+ # differences concentrate in high-motion frames that were not
1304
+ # deliberately sampled. **Recorded as unestablished, not asserted.**
1305
+ description: >-
1306
+ Encoder effort for mp4/MOV output (x264/x265); other output formats
1307
+ ignore it. Slower presets take longer and can produce a smaller file at
1308
+ the same quality — but only while the peak-bitrate ceiling described
1309
+ under `encoding_mode` is not already limiting the output. For size,
1310
+ `crf` is the main lever.
1210
1311
  width:
1211
1312
  type: integer
1212
1313
  min: 2
@@ -1231,31 +1332,48 @@ operation:
1231
1332
  faststart:
1232
1333
  type: boolean
1233
1334
  default: true
1234
- description: >
1235
- Move the MP4/MOV moov atom to the front so the file starts playing
1236
- before it is fully downloaded (progressive web playback). MP4/MOV only.
1237
- CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit
1238
- `output_format` if set, else the input): the default (true) is silently
1239
- inapplicable for a container with no moov atom (e.g. WebM) — that is NOT a
1240
- rejection. Only a caller-EXPLICIT faststart:true on such a container is
1241
- rejected. See FORMAT.md "Container-conditional defaults".
1335
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1336
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
1337
+ # Move the MP4/MOV moov atom to the front so the file starts playing before it is fully
1338
+ # downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL against the
1339
+ # RESOLVED output container (the explicit `output_format` if set, else the input): the
1340
+ # default (true) is silently inapplicable for a container with no moov atom (e.g. WebM)
1341
+ # — that is NOT a rejection. Only a caller-EXPLICIT faststart:true on such a container
1342
+ # is rejected. See FORMAT.md "Container-conditional defaults".
1343
+ description: >-
1344
+ Move the MP4/MOV moov atom to the front so the file starts playing before it is
1345
+ fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL
1346
+ against the RESOLVED output container (the explicit `output_format` if set, else
1347
+ the input): the default (true) is silently inapplicable for a container with no
1348
+ moov atom (e.g. WebM) — that is NOT a rejection. Only a caller-EXPLICIT
1349
+ faststart:true on such a container is rejected.
1242
1350
  audio_codec:
1243
1351
  type: enum
1244
1352
  values: [aac, opus, vorbis, copy]
1245
1353
  default: copy
1246
- description: >
1247
- Audio codec. copy = passthrough (keep the source stream as-is;
1248
- re-encode only on explicit request) — aac/opus/vorbis re-encode.
1249
- Default is `copy`: on the same-container path (`output_format`
1250
- original/absent) the source stream is already container-compatible,
1251
- so copy is safe. When `output_format` RE-TARGETS the container, an
1252
- absent/default audio_codec resolves to a container-valid codec via the
1253
- facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream
1254
- — a DEFAULT is never rejected (the exact per-container resolution,
1255
- incl. ogg vorbis-vs-opus, is an output_format stable-flip
1256
- prerequisite). A caller-EXPLICIT codec the resolved container cannot
1257
- carry (e.g. aac on a webm target) is rejected. See FORMAT.md
1258
- "Container-conditional defaults".
1354
+ # AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
1355
+ # 2026-09-23 — user copy must not point at FORMAT.md). Preserved verbatim:
1356
+ # Audio codec. copy = passthrough (keep the source stream as-is; re-encode only on
1357
+ # explicit request) — aac/opus/vorbis re-encode. Default is `copy`: on the
1358
+ # same-container path (`output_format` original/absent) the source stream is already
1359
+ # container-compatible, so copy is safe. When `output_format` RE-TARGETS the container,
1360
+ # an absent/default audio_codec resolves to a container-valid codec via the facade (e.g.
1361
+ # webm -> opus), NOT a blind copy of an incompatible stream — a DEFAULT is never
1362
+ # rejected (the exact per-container resolution, incl. ogg vorbis-vs-opus, is an
1363
+ # output_format stable-flip prerequisite). A caller-EXPLICIT codec the resolved
1364
+ # container cannot carry (e.g. aac on a webm target) is rejected. See FORMAT.md
1365
+ # "Container-conditional defaults".
1366
+ description: >-
1367
+ Audio codec. copy = passthrough (keep the source stream as-is; re-encode only on
1368
+ explicit request) — aac/opus/vorbis re-encode. Default is `copy`: on the
1369
+ same-container path (`output_format` original/absent) the source stream is
1370
+ already container-compatible, so copy is safe. When `output_format` RE-TARGETS
1371
+ the container, an absent/default audio_codec resolves to a container-valid codec
1372
+ via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream —
1373
+ a DEFAULT is never rejected (the exact per-container resolution, incl. ogg
1374
+ vorbis-vs-opus, is an output_format stable-flip prerequisite). A caller-EXPLICIT
1375
+ codec the resolved container cannot carry (e.g. aac on a webm target) is
1376
+ rejected.
1259
1377
  audio_bitrate:
1260
1378
  type: enum
1261
1379
  value_type: integer