{"id":"c0916","filename":"c0916_dio1_testing_plan_bez_ffmpeg.dok.json","weise3_id":"WEISE3::c0916::dio1-testing-plan::2026-05-17::FENIX2026","tip":"DIO_1_TESTING_PLAN","naziv":"DIO-1 Video Compression Validation Plan (bez ffmpeg dependency)","kreator":"CC","datum":"2026-05-17T20:00:00Z","snippet":"","status":"PLANNED","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"DIO_1_TESTING_PLAN","naziv":"DIO-1 Video Compression Validation Plan (bez ffmpeg dependency)","weise3_id":"WEISE3::c0916::dio1-testing-plan::2026-05-17::FENIX2026","datum":"2026-05-17T20:00:00Z","kreator":"CC","prioritet":"P1","status":"PLANNED","faze":{"KOD_ANALIZA":{"status":"ZAVRSEN","zadaci":["✓ Provjera video_compression.py (603 linije) — FrameEconomy, SignalExtract klase","✓ Provjera video_reconstruction.py (399 linije) — FrameEconomyReconstructor, SignalDecoder","✓ Provjera video_4d.py (609 linije) — KvadrantProcessor sa 10-step pipeline","✓ Validacija CombinedCompressionResult i integrated result types"],"zakljucak":"Kod je KOMPLETAN i strukturno ispravan. Svaka modulna klasa ima sve potrebne metode. Pipeline je osjetljiv na ffmpeg dostupnost."}},"DIO_1_STRUKTURA":{"video_compression.py":{"klase":["VideoCompressionResult — output metadata za video kompresiju","AudioCompressionResult — output metadata za audio kompresiju","CombinedCompressionResult — tipizirana kombinacija video+audio rezultata","FrameEconomy — I-frame ekstrakcija (keyframe svaki 30s, H.265 HEVC encoding)","SignalExtract — audio kompresija (Whisper ASR + Opus codec, 85-95% redukcija)"],"metode":["FrameEconomy.compress(input_path, output_path) — izvršava ffmpeg s filterima","FrameEconomy.verify_ssim(compressed_path) — mjeri SSIM (strukturna sličnost) za kvalitetu","SignalExtract.compress_audio(input_wav) — filtrira i kompresira audio","SignalExtract._detect_transients() — mapira audio amplitudu na Krunica block hasheve"],"implementacijska_napomena":"Koristi ffmpeg eksterno, direktno je pozvan subprocess(). Nema mrežne zavisnosti."},"video_reconstruction.py":{"klase":["FrameEconomyReconstructor — interpolira I-framove natrag na 24fps","SignalDecoder — dekodira Opus audio i spaja s videom"],"metode":["reconstruct(compressed_path) — koristi minterpolate filter (default) ili RIFE v4.6 (fallback)","merge_video_audio(video_path, audio_path) — ffmpeg konkat"],"napomena":"minterpolate je standardna ffmpeg opcija. RIFE je neural net fallback koji se detektuje."},"video_4d.py":{"klasa":"KvadrantProcessor","pipeline_koraci":["1. probe_media() — ffprobe za metadata (rezolucija, bitrate, trajanje)","2. extract_keyframes() — JPEG svaki 30s s FrameEconomy","3. classify_keyframes_server() — heuristika za sjaj/saturaciju","4. extract_audio_wav() — Whisper input (16kHz mono)","5. transcribe_audio() — Whisper ASR transkript","6. detect_chapters() — Claude T2 analiza (max 2048 token) — vrsi segmentaciju po temi","7. generate_4d_id() — KVADRANT fingerprint (spatial+temporal+semantic+trust)","8. assemble_manifest_4d() —JSON manifest sa svih 4 dimenzija","9. seal_4d() — FenixVault™ Ed25519 potpis","10. trojna_pohrani_payment() — ZAKON 3 triplet storage (Krunica+Dvorac+Bršljan)"],"4d_dimensions":{"D1_spatial":"GPS koordinate (ako dostupne) + device ID + kamera specifikacije","D2_temporal":"Timestamp ekstrakcije + duration + framerate","D3_semantic":"Whisper transkript + chapter detection (tema/vrijeme) + keyframe klasifikacija","D4_trust":"Auth tier (Noble/Device) + provenance (koji čvor je generirao) + otisk ekstrakcije"}}},"TESTING_PRISTUP":{"faza_1_validacija_bez_ffmpeg":{"naziv":"Code Structure Validation (moguće bez ffmpeg)","zadaci":["✓ Python static analysis — sve klase i metode su dostupne","✓ Type hints provjera — TypedDict/dataclass korištenjem e su ispravne","✓ Import test — modulni mogu biti učitani ako je Django dostupan","✓ Signature matching — sve metode imaju očekivane parametare"],"rezultat":"COMPLETED — kod je strukturno valjan"},"faza_2_ffmpeg_dependent_test":{"naziv":"Real Video Compression Test (trebalo ffmpeg)","preduslov":"ffmpeg dostupan na EU serveru","test_procedure":["1. Generiraj ili preuzmi 5-minutnu test video datoteku (500MB+, 1080p)","2. Pozovi compress_full() na testu","3. Mjeri: output_size, reduction_pct, elapsed_time","4. Target: <150MB (70%+ compression ratio)","5. Provjeri SSIM (output_similarity ≥ 0.85 s originalom)","6. Testiraj audio transcription akurnost"],"expected_metrics":{"input_5min_1080p":"~500 MB","output_target":"<150 MB","reduction_target":"70%+","elapsed_time":"<5 min (single-threaded ffmpeg)","ssim_threshold":"≥ 0.85","framerate_reconstruction":"24fps (RIFE or minterpolate)"},"napomena":"ffmpeg nije dostupan na EU serveru — test se ne može izvršiti u ovoj sesiji"},"faza_3_dio2_integration":{"naziv":"DIO-2 Compute Mesh Integration (paralelno)","preduslov":"DIO-1 code validation","zadaci":["— Kreiraj Redis XADD job queue (genesis:arhiva:compression:stream)","— Implementiraj BORG worker pool sa ephemeral identiteti","— Wire ServiceWorker za local fallback","— Test round-trip: upload → queue → worker → result"],"status":"PENDING — čeka nakon DIO-1 validacije"}},"DEPLOYMENT_READINESS":{"EU_server_status":"✓ ZAKON infrastructure OK, ffmpeg trebalo","NEW_server_status":"Ready for DIO-1 test (kompresija) i DIO-2 (mesh)","MAR_production":"Čeka nakon DIO-1 validacije","deployment_strategy":"EU dev → NEW test/playfield → MAR production","blocker_za_production":"ffmpeg test results trebali za confidence u compression ratios"},"NAPOMENA_ARHITEKTURA":"DIO-1 je osnova za sve ostalo. Ako compression ne daje 70%+ reduction, cjelokupna Arhiva V2 strateg je rizična. Zato je bitno prvo testirati s realnim videom.","SLJEDEĆI_KORACI_NAKON_OVOG":["1. Instalacija ffmpeg na EU (apt-get ili docker) ILI","2. Korištenje NEW/MAR servera ako je ffmpeg tamo dostupan ILI","3. Mock video test s Python pillow/opencv za brz structural test","4. Nakon DIO-1 validation → begin DIO-2 compute mesh u paralelnom sprinte"],"seal":"BPZ-9 L5 Ed25519 pending"}}