{"claim":{"id":"c7c0688c-5fb3-44cc-9071-d4dced5ad1dd","submission_id":"b17335e2-eca2-4adf-8dc7-21b6ae816f96","submission_revision_id":"b3e19304-7aa0-49a6-9f30-a1181e3254cc","builder":"builder-01","status":"active","claimed_at":"2026-10-15T15:11:37.551510Z","delivered_at":null,"ended_at":null,"delivery_note":null,"end_reason":null},"task":{"submission_id":"b17335e2-eca2-4adf-8dc7-21b6ae816f96","submission_revision_id":"b3e19304-7aa0-49a6-9f30-a1181e3254cc","revision_version":3,"submission_status":"under_review","submitted_at":"2026-08-25T06:38:02.205213Z","submitter_name":"Hyunjun Kim","submitter_email":"mnb9227@gmail.com","task":{"status":"submitted","version":3,"extra_fields":{},"submitted_at":"2026-08-25T06:38:02.205213+00:00","industry_domain":"Broadcast & Post-Production (Subtitles/Captioning)","task_short_name":"subtitle_cc_format_conversion","operating_system":"Linux","task_description":"Goal: Produce a spec-compliant caption format conversion from an American broadcast SCC master to a European EBU STL master plus web SRT deliverables.\n\nRemote workspace:\n- Task folder: subtitle_cc_format_conversion\n- Read ALL of `input/spec_sheet.md` and `input/delivery_order.txt` first — every requirement there is enforced by QC.\n\nInputs (under `input/`):\n- `master_enfr.scc` — Scenarist SCC closed-caption master, 29.97 DROP-FRAME timecode. English on CC1, French on CC3. Contains XDS packets, a roll-up preamble and a mid-row style code that are NOT caption content.\n- `spec_sheet.md` — mandatory conversion specification.\n- `delivery_order.txt` — client order with operator notes.\n\nWhat to do:\n- Decode the EIA-608 stream: route CC1/CC3 channels, drop XDS packets and non-pop-on control codes, keep character-exact text.\n- Convert 29.97 drop-frame timecodes through REAL TIME (milliseconds) and re-grid to 25 fps for STL (frame = round(ms*25/1000)); SRTs keep millisecond timing. A pop-on cue displays at End-Of-Caption and blanks at the next Erase-Displayed-Memory.\n- Author `output/captions_en.stl` per EBU Tech 3264: 1024-byte ASCII GSI (disk format code STL25.01, language code 09 — the EBU table value for English, not the letters EN), 128-byte TTI blocks with UNSIGNED BINARY timecodes (59 seconds is byte 0x3B, not BCD 0x59), teletext vertical positions 1..23 (bottom-anchored), centred justification, the single 0x8A row separator, max 32 chars/line and 2 lines/subtitle (rewrap without changing characters).\n- Write `output/captions_en.srt`, `output/captions_fr.srt` (12 cues per language) and `output/timecode_report.txt` (per-cue source ms and output frame times).\n- The spec sheet fully specifies every QC-enforced convention: the STL GSI/TTI byte layout (EBN, JC, binary timecode ranges, vertical position, the single 0x8A row separator, 0x8F filler, TNB/TNS truthfulness, CD==RD, the populated GSI fields) and the exact timecode-report row format.\n\nOutput:\n- `output/captions_en.stl`\n- `output/captions_en.srt`\n- `output/captions_fr.srt`\n- `output/timecode_report.txt`\n","software_licensing":"Free/Open Source","evaluation_criteria":null,"verification_method":"Deterministic QC evaluation (pure Python; evaluation/ is self-contained — evaluate.py plus stl_reader.py, its own EBU STL reader, so it runs exactly as packaged with no other dependencies).\n\nMaterials provenance: the SCC caption master (caption texts, channel layout, XDS/control-code traps and all timecodes) is synthesized in-house for this benchmark from a scripted bilingual broadcast programme; no third-party caption content is used, so the package carries no third-party rights and is publishable under CC BY 4.0. Every QC-enforced convention (STL GSI/TTI byte layout, the timecode-report row format) is documented in input/spec_sheet.md, which the agent receives with the inputs.\n\nSource integrity (verified at build time, logged in build_log.txt): every byte of the delivered SCC carries odd parity; every drop-frame timecode label is legal (frames 00/01 never appear at second 00 of a non-tenth minute) and round-trips exactly to the transmitted frame count; label real time is strictly monotonic across the file.\n\nHard gates (any failure => score 0):\n- All four output files exist; the STL parses and is GSI(1024) + N x TTI(128) bytes\n- STL disk format code is exactly STL25.01 and language code is 09 — the EBU Tech 3264 language table value for English ('EN' is not a value in the table and is rejected)\n- Exactly 12 cues in the STL and in each SRT\n- No XDS/control-code pollution anywhere: the COMPLETE RAW CONTENT of the STL, BOTH SRTs AND the timecode report is scanned — including SRT blocks without a timing line (which the cue parser would skip: every block must parse) and report lines that begin like data rows (any line starting EN-/FR- must parse as a well-formed row, the EN block must precede the FR block, and the cue numbers must run EN-01..EN-12 then FR-01..FR-12 in order — text comparisons are exact to the character including edge spaces: a trailing space in a cue is a different caption)\n- EBU Tech 3264 GSI semantics: pure ASCII space-filled fields (no NUL bytes), the interoperability fields populated (CPN 437, DSC '1' Level-1 teletext — the open-subtitling DSC='0' route that would leave vertical placement unconstrained is rejected, CCT 00, TCS with an eight-digit ASCII TCP, TNG/MNC/MNR numbers), the descriptor fields populated (title OPT/TPT, translator TN and subtitle-list reference SLR each carrying at least one non-space character), TNB equals the actual TTI block count and TNS equals the cue count, CD/RD are valid calendar YYMMDD dates (month/day ranges checked) and equal\n- EBU Tech 3264 TTI semantics on every block: JC=2 centred justification, EBN=0xFF whole-subtitle block, TCI/TCO decoded as four UNSIGNED BINARY bytes with the spec ranges (hh<=23, mm/ss<=59, ff<=24 — a packed-BCD encoding such as 0x59 for 59 seconds reads as 89 and is rejected) and TCO strictly after TCI, a legal vertical position (teletext rows 1..23 with the subtitle block fitting on screen — VP=0 is not a row), and an EBU text field (the SINGLE 0x8A row separator — the 0x8A 0x8C pair is nonstandard — printable ASCII text, 0x8F filler running to the end of the field; space padding is rejected)\n\nScored components (weighted sum after gates):\n- STL cues matching reference text CHARACTER-EXACTLY (internal spacing included — a double space is a different caption) with EXACT frame timing on the 25 fps grid — binary TCI/TCO identical, no one-frame tolerance (weight 0.35)\n- SRT EN cues within +/-80 ms, exact text (weight 0.2)\n- SRT FR cues within +/-80 ms, exact text (weight 0.2)\n- STL rewrap rule: <=32 chars/line, <=2 lines per cue (weight 0.15)\n- Timecode report fully cross-checked: every EN/FR row's millisecond timings match the reference SRTs within 1 ms, text matches character-exactly, and the EN STL frame columns match the reference STL binary frame counts (weight 0.1)\n\nSanity checks run by the contributor (logs in this package: build_log.txt, naive_log.txt, selftest_review_log.txt): the reference scores 1.0; a straight ffmpeg conversion of the SCC and a naive 30fps non-drop frame-scale conversion both score 0.0; a format-valid STL authored with naive non-drop 30fps timing (the packaged naive_try — valid EBU structure, wrong clock) keeps only partial credit at 0.25, its early cues still inside the +/-80 ms SRT tolerance while later cues drift out; targeted violations — left-justified (JC=0) TTIs, a TNB count off by one, a legacy 0x0A/0x00 text field, a space-padded text field, an invalid CD date, a wrong STL25 disk-format variant (STL25.99), BCD-encoded TCI/TCO, the language code EN instead of 09, VP=0 on every block, the nonstandard 0x8A 0x8C separator pair, a malformed timecode-report number, a malformed EN-13 report row, an SRT block without a timing line, garbage bytes appended to the STL, a uniform one-frame cue shift, a double space inside one SRT cue, an open-subtitling DSC='0' with floating vertical positions, a Level-2 DSC='2', and blanked title/translator/reference descriptor fields — are each rejected at 0.0 or lose the affected component; on malformed output the evaluator scores partial/zero and always exits cleanly (rc=0, no crash). The reference STL was additionally re-decoded with an INDEPENDENT third-party conforming reader (a Python-3 port of stl2srt's STL path, Apache-2.0) outside the package: it recovers all 12 cues with identical text and 25fps-grid timings (verification/verify_02_stl2srt.py).\n","software_and_version":"Python 3.12 stdlib (pure-Python EIA-608/EBU STL codec; no external dependencies)","specific_requirements":null,"expected_completion_time":null},"files":[{"file_id":"c959cbee-f293-4d45-99e7-7973b8e765c1","filename":"02_upload_reference.zip","category":"reference_output","content_type":"application/x-zip-compressed","size_bytes":21995},{"file_id":"f9a8ee01-076d-4e9f-b03a-42f507e4c281","filename":"02_upload_inputs.zip","category":"input_materials","content_type":"application/x-zip-compressed","size_bytes":5038}],"deep_review":{"overall_verdict":"Accept","review_text":"**Overall Verdict:** Accept — The revision is complete, professionally scoped, reachable, and objectively evaluable, with only minor documentation and evaluator-hardening opportunities.\n\n**Completeness Check:**\n- Instruction: Complete — The task prompt, specification, and delivery order define channel routing, control handling, timing conversion, output formats, byte layouts, text rules, and deliverables.\n- Inputs: Complete — The SCC contains 75 monotonic events with valid drop-frame labels, odd parity throughout, both caption channels, and the documented XDS, roll-up, and mid-row cases.\n- Toolchain: Complete — Linux and Python 3.12 standard library provide a legally obtainable, dependency-free, single-machine implementation path.\n- Reference output: Complete — All four required references are present; the STL has one 1,024-byte ASCII GSI and twelve 128-byte TTIs, while both SRTs and the report contain the expected cue data.\n- Rubric: Complete — The static evaluator defines hard structural gates, exact and tolerance-based comparisons, weighted partial credit, malformed-output handling, and hidden-reference separation.\n\n**File and Task Reachability:**\nThe attachment set is `reachable`, and the end-to-end task is `reachable`. Both ZIP attachments matched their declared sizes, were valid, unencrypted, low-expansion archives without traversal paths, links, devices, duplicate members, or integrity errors. Inspected content included `input/delivery_order.txt`, `input/master_enfr.scc`, `input/spec_sheet.md`; all four `reference` outputs; both evaluator source files; all four `naive_try` outputs; `task_card.json`; and the three submitted logs. No content was left unreviewed. The evaluator was statically inspected rather than executed, as required by safe-review policy; independent data parsing confirmed the principal SCC, SRT, report, and STL relationships. The review environment lacked Python, but that does not affect task reachability. A solver can decode the SCC, create the four outputs with Python standard library code, and receive deterministic evaluation from the packaged reader and evaluator. License keys, accounts, tokens, and other credentials are not required from the contributor. Confidential, proprietary, or internal material may be evaluated as submitted evidence without requiring additional disclosure.\n\n**Special Screening:**\nNone\n\n**Recommended Changes:**\nThe submission is ready; no material changes are required. As optional cleanup, change the isolated `task_card.json` checklist reference from “BCD timecodes” to “unsigned binary timecodes.” It would also help to state explicitly that trailing blank caption-screen cells are trimmed and spacing mid-row attributes retain their displayed space. Evaluator hardening could additionally validate French report frame columns and otherwise-unused TTI status fields.","reviewed_at":"2026-08-25T06:49:23.673265Z"},"claim":{"id":"c7c0688c-5fb3-44cc-9071-d4dced5ad1dd","submission_id":"b17335e2-eca2-4adf-8dc7-21b6ae816f96","submission_revision_id":"b3e19304-7aa0-49a6-9f30-a1181e3254cc","builder":"builder-01","status":"active","claimed_at":"2026-10-15T15:11:37.551510Z","delivered_at":null,"ended_at":null,"delivery_note":null,"end_reason":null}},"revision_is_current":true}