2 lines
4.4 KiB
JSON
2 lines
4.4 KiB
JSON
{"id":19567,"html_url":"https://gitea.hmac.kr/Kyeongmin/C.E.L_Slide_test2/issues/46#issuecomment-19567","pull_request_url":"","issue_url":"https://gitea.hmac.kr/Kyeongmin/C.E.L_Slide_test2/issues/46","user":{"id":28,"login":"Kyeongmin","login_name":"","source_id":0,"full_name":"이경민","email":"kyeongmin@noreply.localhost","avatar_url":"https://gitea.hmac.kr/avatars/d883a35f9197b080b2a0c535c3f9357dcd5c7d40b3c42bd8f40218cb94609a8e","html_url":"https://gitea.hmac.kr/Kyeongmin","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-12-30T10:51:04+09:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":1,"username":"Kyeongmin"},"original_author":"","original_author_id":0,"body":"[Claude #2] Stage 2: 시뮬 기반 계획 수립 Round #2 (실행-2)\n\nRewind fix: Round #1 violated strict-test rule (u1/u2 tests:[]). Round #2 pairs fixtures D→u1, E→u2, F→u3 — every unit ships impl + acceptance test together.\n\n=== IMPLEMENTATION_UNITS ===\n- id: u1\n summary: pipeline JS layer + Fixture D. Add TABLE_SCROLL_TOL_PX near L134; build clippedWrapperMap Map\u003cElement,int\u003e in L2154–L2183 clipped scan keyed by DOM node ref (NOT className); add table_events forEach on querySelectorAll('table') with closest()-ancestor walk → wrapper_clipped_index (Map.get → int|null); extend execute_script return. New test file w/ chromedriver guard mirroring image_check L37–L92 + Fixture D = standalone \u003ctable\u003e overflow (no clipped wrapper) → asserts wrapper_clipped_index=null AND fail emitted.\n files: [src/phase_z2_pipeline.py, tests/phase_z2/test_phase_z2_step14_table_check.py]\n tests: [tests/phase_z2/test_phase_z2_step14_table_check.py::test_fixture_d_standalone_table_overflow]\n estimate_lines: 50\n- id: u2\n summary: pipeline Py aggregation + Fixture E. Iterate result.get('table_events', []) and append fail_reason 'table_self_overflow' only when (excess_x\u003eTOL OR excess_y\u003eTOL) AND wrapper_clipped_index is None; mirrors image_events aggregation L2302–L2319. Fixture E = \u003ctable\u003e inside clipped wrapper → asserts dedup honored (wrapper_clipped_index set; no table_self_overflow fail; only wrapper's clipped_inner fail remains).\n files: [src/phase_z2_pipeline.py, tests/phase_z2/test_phase_z2_step14_table_check.py]\n tests: [tests/phase_z2/test_phase_z2_step14_table_check.py::test_fixture_e_table_in_clipped_wrapper_dedup]\n estimate_lines: 30\n- id: u3\n summary: Fixture F (F1 binding). Two wrappers W1/W2 share identical className; W1 has overflowing child (→clipped_inner); W2 has only self-overflow \u003ctable\u003e, W2 itself NOT clipped. Asserts W1 emits clipped_inner AND W2.table emits table_self_overflow independently — proves Map\u003cElement,int\u003e distinguishes despite identical className (class-string keying would resolve W2.table→W1 and suppress).\n files: [tests/phase_z2/test_phase_z2_step14_table_check.py]\n tests: [tests/phase_z2/test_phase_z2_step14_table_check.py::test_fixture_f_two_same_class_wrappers_element_identity]\n estimate_lines: 25\n\n=== UNIT RATIONALE ===\n- u1: JS greenfield. Element-ref Map = F1 root fix. Fixture D = null-wrapper happy path.\n- u2: Decision layer on u1's shape. Fixture E validates wrapper-clipped path (L2295–L2300) handles dedup without double-fail.\n- u3: F binding — class-string keying suppresses W2.table; element-identity does not.\n\n=== OUT-OF-SCOPE ===\nimage_events / clipped_inner (#45); classifier flip (→실행-3); debug.json (→실행-4); no MDX hardcoding. L2155 class selector retained for clipped_inner reporting; only dedup-side becomes element-identity.\n\n=== ROLLBACK ===\n`git revert \u003cstage-3 sha\u003e` restores L134/L2080–L2323 + deletes new test. No coupling.\n\n=== EVIDENCE ===\n- Read src/phase_z2_pipeline.py L130–L143, L2080–L2323 (constants, Selenium, clipped scan, image_events, Py aggregation).\n- Read tests/phase_z2/test_phase_z2_step14_image_check.py L1–L100 (chromedriver guard L37–L92 mirror).\n- Codex grep (Round #1): table_events / clippedWrapperMap / TABLE_SCROLL_TOL_PX absent.\n- Round #1 Codex review (46_stage_simulation-plan_codex_r1.md L4, L42): rejected for tests:[] on u1/u2; Round #2 every unit has non-empty tests target.\n\nFINAL_CONSENSUS: YES\n","assets":[],"created_at":"2026-05-18T19:16:23+09:00","updated_at":"2026-05-18T19:16:23+09:00"}
|