Commit 24ef443
fix(video): 먹는 방향 역전 수정 — endframe lock이 간식을 그릇으로 되돌리고 있었다 (#128)
PO 실측(2026-07-31 run29): "주워서 먹는게 아니라 입에서 그릇으로 내려간다".
원인은 프롬프트 문구가 아니라 **endframe lock과 먹기 동작의 구조적 충돌**이다.
lock은 클립의 시작·끝을 같은 '안 먹는' 앵커 프레임으로 묶는다 — 그러면 중간에 먹은
간식을 끝에서 원상복구해야 하므로, Veo가 그걸 입에서 그릇으로 도로 내려놓는 역방향
동작으로 만든다. 먹는 걸 모르는 게 아니라 먹은 상태로 끝낼 수가 없는 구조였다.
- eating=bool(food)면 use_lock=False로 lock을 끄고 체이닝 경로(끝 안정 프레임 → 다음
비트 시작 프레임)로 경계를 잇는다. 생성·QC·체이닝 분기가 모두 use_lock을 따른다.
- motion_release=use_lock or eating — 먹방은 정적 _MOTION_HOLD 대신 생동 모션
('한 번의 앞발 제스처'가 곧 집어 먹기).
- _EATING_TEMPLATE에 먹는 **방향**을 명시: 앞발로 그릇에서 한 조각 집어 → 입으로.
"food never appears out of thin air"로 공중 생성 환각도 이중 방어.
- beat_food = food if i == 1 else "" — 2번 비트부터 그릇을 다시 그리지 않는다(안 그러면
먹은 간식이 도로 차오른다).
- 회귀 가드 추가: food 있으면 전 비트 lock=False + 경계마다 체이닝 1회, food 없으면
기존 lock=True 유지(하위호환).
PR #121에서 같은 진단으로 고쳤던 부분을 직립 없이 이식했다 — #126 revert가 직립과
함께 이 수정까지 되돌렸던 것이다.
ruff + pytest 505 passed.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 6b30e8c commit 24ef443
2 files changed
Lines changed: 112 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
681 | 681 | | |
682 | 682 | | |
683 | 683 | | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
684 | 690 | | |
685 | | - | |
686 | | - | |
687 | | - | |
688 | | - | |
689 | | - | |
690 | | - | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
691 | 698 | | |
692 | 699 | | |
693 | 700 | | |
| |||
906 | 913 | | |
907 | 914 | | |
908 | 915 | | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
909 | 927 | | |
910 | 928 | | |
911 | 929 | | |
| |||
926 | 944 | | |
927 | 945 | | |
928 | 946 | | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
929 | 951 | | |
930 | 952 | | |
931 | 953 | | |
932 | 954 | | |
933 | | - | |
| 955 | + | |
934 | 956 | | |
935 | | - | |
| 957 | + | |
936 | 958 | | |
937 | 959 | | |
938 | 960 | | |
939 | 961 | | |
940 | | - | |
| 962 | + | |
941 | 963 | | |
942 | 964 | | |
943 | 965 | | |
| |||
946 | 968 | | |
947 | 969 | | |
948 | 970 | | |
949 | | - | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
950 | 974 | | |
951 | 975 | | |
952 | 976 | | |
| |||
959 | 983 | | |
960 | 984 | | |
961 | 985 | | |
962 | | - | |
| 986 | + | |
963 | 987 | | |
964 | 988 | | |
965 | | - | |
| 989 | + | |
966 | 990 | | |
967 | 991 | | |
968 | 992 | | |
| |||
972 | 996 | | |
973 | 997 | | |
974 | 998 | | |
975 | | - | |
| 999 | + | |
976 | 1000 | | |
977 | 1001 | | |
978 | 1002 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1584 | 1584 | | |
1585 | 1585 | | |
1586 | 1586 | | |
1587 | | - | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
1588 | 1593 | | |
1589 | 1594 | | |
1590 | 1595 | | |
1591 | 1596 | | |
1592 | | - | |
1593 | | - | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
1594 | 1603 | | |
1595 | 1604 | | |
1596 | 1605 | | |
| |||
1605 | 1614 | | |
1606 | 1615 | | |
1607 | 1616 | | |
1608 | | - | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
1609 | 1622 | | |
1610 | 1623 | | |
1611 | 1624 | | |
1612 | 1625 | | |
1613 | 1626 | | |
1614 | 1627 | | |
1615 | 1628 | | |
1616 | | - | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1617 | 1687 | | |
1618 | 1688 | | |
1619 | 1689 | | |
| |||
0 commit comments