618ba9af49- Implement end-to-end cinematic highlight rendering pipeline - Wire visual effects and local asset generation into highlight flow - Add director plan rendering with local asset worker
main
JSLMPR
2026-07-12 01:20:18 +0200
adc979eea8Add local CV worker readiness checks
JSLMPR
2026-07-11 17:46:40 +0200
80eca92d56Add highlight rendering gap closure plan
JSLMPR
2026-07-11 17:26:36 +0200
8195b58552Add rich video editing diagnostics
JSLMPR
2026-07-11 17:11:35 +0200
e2f49e2e5aAdd managed local CV worker startup
JSLMPR
2026-07-11 16:50:54 +0200
9dc720b0ccAdd runnable local CV model worker
JSLMPR
2026-07-11 16:40:59 +0200
82e557905eAdd local CV visual analysis provider
JSLMPR
2026-07-11 10:49:11 +0200
702d768e33• Added missing tests and a 100% coverage gate for the new folder scheduler package.
JSLMPR
2026-07-10 01:02:08 +0200
97cc4ff4e4• Implemented the next Input Folder Scheduler Plan milestone: startup directory initialization.
JSLMPR
2026-07-10 00:52:40 +0200
1cda571c30• clip video locally plan
JSLMPR
2026-07-10 00:49:29 +0200
06cf76e318• Added the signoff artifact at docs/load-test-signoff.md and marked Load-test signoff complete in docs/video-clipping-service-implementation-plan.md:726.
JSLMPR
2026-07-10 00:30:56 +0200
2cb35ae01a• Added the DLQ redrive artifact at docs/dlq-redrive-procedure.md and marked DLQ redrive procedure complete in docs/video-clipping-service-implementation-plan.md:725.
JSLMPR
2026-07-10 00:29:26 +0200
9d284104a8• Added the backup/restore validation artifact at docs/backup-and-restore-validation.md and marked Backup and restore validation complete in docs/video-clipping-service-implementation-plan.md:724.
JSLMPR
2026-07-10 00:27:26 +0200
16152f38ce• Added the runbook artifact at docs/runbooks.md and marked Runbooks complete in docs/video-clipping-service-implementation-plan.md:723.
JSLMPR
2026-07-10 00:22:35 +0200
cec13dfb1bAdded the next operational-readiness artifact in docs/alerts.md and marked Alerts complete in docs/video-clipping-service-implementation-plan.md:722.
JSLMPR
2026-07-10 00:20:31 +0200
1d0952c363Updated the prompt in docs/grafana-dashboard-creation-prompt.md so the VPS AI now has the full next-step instructions: generate the dashboard JSON, save it to dashboards/video-clipping-overview-grafana.json, and verify the result before finishing.
JSLMPR
2026-07-10 00:17:51 +0200
4d00b5e32bI added an importable Grafana dashboard at dashboards/video-clipping-overview-grafana.json:1 and the companion setup note in docs/dashboards.md:1. The dashboard covers queue backlog and age, DLQ and processing counts, API request rate and p95 latency, plus CPU and heap usage using the Prometheus and Micrometer metrics already exposed by the service.
JSLMPR
2026-07-10 00:14:13 +0200
1b9246bafeI added a reproducible cost-model harness in src/test/java/org/example/videoclips/perf/CostModelBenchmarkHarness.java:1 that turns the checked-in FFmpeg and object-storage benchmark baselines into per-source-minute estimates under explicit planning assumptions. The checked-in companion doc is docs/cost-model-by-video-minute.md:1, and it now includes the modeled baseline table:
JSLMPR
2026-07-09 19:04:23 +0200
632959104b• The next step is done and the plan is updated. Autoscaling policies is now marked complete in docs/video-clipping-service-implementation-plan.md:717.
JSLMPR
2026-07-09 19:00:31 +0200
5565298351• I completed the next plan item and updated the checklist. Queue visibility-timeout tuning is now marked done in docs/video-clipping-service-implementation-plan.md:716.
JSLMPR
2026-07-09 18:37:57 +0200
f46055c972• The next plan item is done and the plan is updated. Object-storage bandwidth tests is now marked complete in docs/video-clipping-service-implementation-plan.md:713.
JSLMPR
2026-07-09 01:33:24 +0200
9ffe9bca5cI continued with the next plan step and updated the plan.
JSLMPR
2026-07-09 01:25:04 +0200
e18c2cd9a9• I completed the next plan step and updated the plan. Security review is now marked done in docs/video-clipping-service-implementation-plan.md:701.
JSLMPR
2026-07-09 01:19:43 +0200
a660b7c1d8I completed the next step, Full application/problem+json error model, and updated the plan in docs/video-clipping-service-implementation-plan.md:701.
JSLMPR
2026-07-09 01:14:38 +0200
1737d8b220I finished the missing part: retryable DB-queue failures no longer become terminal job failures on the first exception. ClipProcessor now supports non-terminal queue retries, the DB queue adapter reschedules retries and only marks the job FAILED when the message actually moves to DLQ, and retry/DLQ events are recorded at the job level. The key changes are in src/main/java/org/example/videoclips/processing/ClipProcessor.java:37 and src/main/java/ org/example/videoclips/queue/DatabaseBackedClipJobQueueAdapter.java:18.
JSLMPR
2026-07-09 01:10:53 +0200
1bd879f1e2I completed the next plan step, Tenant quotas, and updated the plan to mark it done in docs/video-clipping-service-implementation-plan.md:701.
JSLMPR
2026-07-09 01:07:07 +0200
8548542248• I updated the milestone section in docs/video-clipping-service-implementation-plan.md:688 to mark what is already done and to show Retry and DLQ handling as in progress rather than untouched.
JSLMPR
2026-07-09 00:59:22 +0200
0d45f898f7I continued with the security-review step from the plan and tightened the API contract so internal storage locations no longer leak out of normal responses.
JSLMPR
2026-07-09 00:53:12 +0200
73070824dfI changed the signed clip download flow so it uses the clip’s persisted objectKey instead of deriving a fake path from clipId. The fix is in src/main/java/org/example/videoclips/application/ VideoAssetService.java, src/main/java/org/example/videoclips/storage/ObjectStoragePort.java, src/main/java/org/example/videoclips/storage/InMemoryObjectStorageAdapter.java, and src/main/java/org/ example/videoclips/storage/S3ObjectStorageAdapter.java.
JSLMPR
2026-07-09 00:33:30 +0200
8cb232d70eAssets and clips now carry expiration timestamps in the domain model:
JSLMPR
2026-07-09 00:28:05 +0200
3d961f2adfThe new cleanup job is in src/main/java/org/example/videoclips/operations/LocalArtifactCleanupJob.java. It runs on a schedule and removes expired files from:
JSLMPR
2026-07-09 00:23:41 +0200
8f4804c2absrc/main/java/org/example/videoclips/processing/ClipProcessor.java now cleans up staged local input/output files in a finally block, so worker temp files are removed on success and failure instead of accumulating. Cleanup is controlled by the new video-clipping.ffmpeg.cleanup-local-files property wired through src/main/java/org/example/videoclips/config/VideoClippingProperties.java and src/main/resources/application.properties.
JSLMPR
2026-07-09 00:21:36 +0200
abf1259397The ClipProcessor symbol issue is fixed now.
JSLMPR
2026-07-09 00:19:44 +0200
66e998ee2aGenerated clips now have a persisted object location instead of being metadata-only. I added objectKey to src/main/java/org/example/videoclips/domain/Clip.java, mapped it through JPA in src/main/ java/org/example/videoclips/persistence/entity/ClipEntity.java and src/main/java/org/example/videoclips/persistence/JpaVideoClippingMapper.java, and added the schema migration at src/main/ resources/db/migration/V5__clip_object_key.sql.
JSLMPR
2026-07-09 00:16:49 +0200
bd620fc773The storage port now has a real staging operation:
JSLMPR
2026-07-09 00:02:05 +0200
9df97362baThe core change is that VideoAsset now carries sourceObjectKey, and that value is persisted through the JPA entity and migrations:
JSLMPR
2026-07-08 23:57:09 +0200
7e8a214c3euploads:complete now goes through the storage port instead of being a pure metadata flip. I added provider upload metadata to UploadSession, wired it through src/main/java/org/example/videoclips/ application/VideoAssetService.java, src/main/java/org/example/videoclips/storage/ObjectStoragePort.java, and the JPA upload-session mapping, and added a migration at src/main/resources/db/ migration/V3__upload_session_provider_metadata.sql. The storage adapters now expose completeMultipartUpload(...), with the in-memory adapter as a no-op and the S3 adapter implementing the AWS multipart completion call.
JSLMPR
2026-07-08 23:54:16 +0200
67c7b65639The storage port now has an opt-in S3-compatible implementation in src/main/java/org/example/videoclips/storage/S3ObjectStorageAdapter.java. It uses the AWS SDK presigner to generate multipart upload part URLs and signed clip download URLs when video-clipping.storage=s3. The current in-memory adapter remains the default. I also added the supporting configuration fields in src/main/ java/org/example/videoclips/config/VideoClippingProperties.java and default values in src/main/resources/application.properties.
JSLMPR
2026-07-08 23:47:05 +0200
517a4e1146The service now has an opt-in JPA/Flyway adapter instead of only the in-memory repository. I introduced VideoClippingRepository as the application-facing persistence contract and wired both src/ main/java/org/example/videoclips/infrastructure/InMemoryVideoAssetRepository.java and the new src/main/java/org/example/videoclips/persistence/JpaVideoClippingRepository.java behind it. The JPA path includes entity models, Spring Data repositories, a mapper, and a Flyway baseline migration at src/main/resources/db/migration/V1__init_video_clipping.sql. I also added the required dependencies in pom.xml.
JSLMPR
2026-07-08 22:44:18 +0200
067fc782a3DELETE /v1/video-assets/{assetId} now does more than flip a flag. In src/main/java/org/example/videoclips/application/VideoAssetService.java it now:
JSLMPR
2026-07-08 22:39:54 +0200
bcf2fa40bbThis pass added explicit upload-session state and stricter media validation. GET /v1/video-assets/{assetId}/upload-session is now implemented in src/main/java/org/example/videoclips/api/ VideoAssetController.java, backed by richer UploadSession metadata in src/main/java/org/example/videoclips/domain/UploadSession.java. The service now stores part size, part count, expiry, and completion time, and returns them through src/main/java/org/example/videoclips/application/VideoAssetService.java. I also added a configurable media-type allowlist in src/main/java/org/example/ videoclips/config/VideoClippingProperties.java and reject unsupported uploads with 415 via src/main/java/org/example/videoclips/application/UnsupportedMediaTypeException.java and src/main/java/ org/example/videoclips/api/ApiExceptionHandler.java.
JSLMPR
2026-07-08 22:28:20 +0200