PASS Ramp-A교P1형: every bundle classified (30) [] PASS Ramp-A교P1형: V3 = ['params:coping_rebar'] (explicit bar lists, 부록 A) ['params:coping_rebar'] PASS Ramp-A교P1형: run settings / pier_id are F PASS 산외교울산P1형: every bundle classified (31) [] PASS 산외교울산P1형: V3 = ['params:coping_rebar'] (explicit bar lists, 부록 A) ['params:coping_rebar'] PASS 산외교울산P1형: run settings / pier_id are F PASS 산외교울산P2형: every bundle classified (32) [] PASS 산외교울산P2형: V3 = ['params:coping_rebar'] (explicit bar lists, 부록 A) ['params:coping_rebar'] PASS 산외교울산P2형: run settings / pier_id are F PASS 새재1교P1형: every bundle classified (31) [] PASS 새재1교P1형: V3 = ['params:coping_rebar', 'params:footing_rebar'] (explicit bar lists, 부록 A) ['params:coping_rebar', 'params:footing_rebar'] PASS 새재1교P1형: run settings / pier_id are F PASS 옥성교P1형: every bundle classified (32) [] PASS 옥성교P1형: V3 = ['params:coping_rebar', 'params:footing_rebar'] (explicit bar lists, 부록 A) ['params:coping_rebar', 'params:footing_rebar'] PASS 옥성교P1형: run settings / pier_id are F PASS 운곡교P1형: every bundle classified (30) [] PASS 운곡교P1형: V3 = [] (explicit bar lists, 부록 A) [] PASS 운곡교P1형: run settings / pier_id are F PASS new pier created 302 PASS all 26 required bundles are still the template's original 26/26 PASS pier page warns about original values and shows grade / source columns PASS pier folder holds its own variability.json and the origin record PASS V1 edit saved without reason PASS edited bundle is no longer 'original' PASS F-field change without reason refused PASS F-field change with reason saved and logged [{'at': '2026-10-20 15:40:28', 'section': 'params:column', 'fixed_fields': ['shape'], 'reason': '사각 기둥 시험'}] PASS F bundle (scope) change without reason refused PASS V3 bundle edit refused PASS V3 section page explains PASS old pier: origin unknown (None), no 'original' claim PASS old pier page says the origin is not recorded PASS save_template writes variability.json PASS confirming every required bundle one by one works RESULT PASS