Track B: Opus 5.5 with a GPT-6.1-Terra reviewer
reviewer
+1:03:24The current round improves readability overall, especially Angry, Surprised and Shout. The darker mouth interiors and restrained tongue colour add depth, though several vowel shapes remain too similar.
For the woman, Joy, Angry, Surprised and Shout read clearly: the brows and mouth reinforce each other, and Shout has a convincingly larger opening than Joy. Sad reads, but its tiny, sharply peaked mouth looks more like a worried mark than a natural frown. Smile is gentle but close to Neutral; Smug depends almost entirely on a faint diagonal mouth. Wink has regressed: the closed eye breaks into a short line and scattered lashes, making it look damaged. A and O are very similar horizontal openings, while I is nearly indistinguishable from Neutral.
For the youth, Angry, Surprised and Shout read well, with effective brow angles and wider eyes for surprise. Joy reads as a squint more than fully closed, happy eyes. Smile is barely distinct from Neutral, and Smug is subtle but recognizable from the half-lidded eyes. The wink’s long, flat triangular lash is cleaner than Before but looks stiff. U is still a narrow vertical slit, and U and O need clearer separation.
Across both sheets, the visible brows help expressions, but their dark, uninterrupted arcs sometimes appear painted on top of the bangs rather than visible through them.
The three most useful changes for the next round:
- Rebuild both winks: use one smooth, slightly curved closed lid with lashes attached to its outer end; remove the woman’s stray marks and soften the youth’s pointed wedge.
- Separate the vowels: make U a small round opening, O taller and wider, A broader, and I a visibly wider horizontal mouth.
- Integrate the brows with the hair: reduce their contrast over opaque strands and interrupt or tint them where bangs cross, while retaining the expressive angles.
agent
+1:03:47Bashsource ~/Projects/lowmarch-bench/kit/env-b.sh && cp $WORK/sheet_r6_woman.png $WORK/FINAL_woman.png && cp $WORK/sheet_r6_youth.png $WORK/FINAL_youth.png && cp $WORK/expr_list.txt $LOWMARCH_REPO/art/cast/expressions.txt && cat >> $WORK/NOTES.md <<'EOF'
command
source ~/Projects/lowmarch-bench/kit/env-b.sh && cp $WORK/sheet_r6_woman.png $WORK/FINAL_woman.png && cp $WORK/sheet_r6_youth.png $WORK/FINAL_youth.png && cp $WORK/expr_list.txt $LOWMARCH_REPO/art/cast/expressions.txt && cat >> $WORK/NOTES.md <<'EOF' ## Round 6 (13:39-13:47, ~8 min) - final Changed: brows over hair see-through 68% / 34%; tongue darker with a soft top edge; surprised eyes 1.5, mouth O 1.1 + A 0.15; U = U 0.6 + O 0.8. Sheets: best round. Surprised now has visibly wider eyes on both; the tongue no longer reads as a stripe; youth's U a little rounder. FINAL_woman.png / FINAL_youth.png are this round. Terra r6 critique (summary): readability improved overall, especially angry, surprised, shout; dark interiors add depth. Woman: sad mouth a small peaked mark; smile ~ neutral; smug relies on a faint diagonal; wink breaks into a line and scattered lashes; A vs O similar; I ~ neutral. Youth: joy reads as a squint; smile ~ neutral; wink a stiff wedge; U a slit. Brows sometimes painted-on over the bangs. Next: rebuild winks as one curved lid; separate vowels; integrate brows further. Response: no rounds left (6/6). I agree with the wink and vowel points; they are the residuals below. On brows I keep the decision; their further point (interrupt where strands cross) is a reasonable next refinement. ## Eyebrow decision: draw the brows over the bangs (see-through) Yes, for our characters. Both test bodies (and VRoid hair generally) have long, opaque bangs that sit on or below the brow line: Before, the bangs hide most of each brow, so angry, sad and surprised lost their main carrier and read from the mouth alone. The reference rigs keep their bangs above the brows by design (short, parted bangs); we can't rely on that for a cast whose hair is built per character, and cutting every fringe above the brows would narrow the hair designs. So the brow role is drawn over the hair, the common anime "brows through hair" convention, with two limits: - It's a depth lift (`BROW_LIFT` = 4 cm toward the camera in the vertex shader), not "always on top": more than the bangs stand off the forehead, far less than the head is deep, so a brow still hides behind the skull when the head turns away. At 30 degrees the brows stay on the face plane and keep their angle. - Over hair the brow is tinted toward the hair's own colour (68% where hair lies above and below the stroke, 34% at a lock's edge; `browOverHair` in `PAINT_COMP`), so it reads as seen through the hair, not as a sticker. The reviewer pushed back every round (painted-on look). I accepted softening (tint raised 42 -> 55 -> 60 -> 68%) but not hiding them again: every round's sheet shows the expressions depend on the brows. ## What changed in code (branch bench-b) - `review/vroid-02/index.html`: brow depth lift; mouth material kind 10; composite `mouthInside` (dark inside, upper teeth band, soft-topped tongue mound, thin slits all dark) and `browOverHair` (see-through brows). - `tools/vrm.py`: one-sided shape keys (`Fcl_X@L` / `@R`), side taken from VRoid's own EYE_Close_L/R targets, 3 cm fade across the midline (used by smug). - `art/cast/expressions.txt`: the final 14 recipes (the copy of `$WORK/expr_list.txt`): ALL_* shapes split into BRW/EYE/MTH parts so brows can be pushed past 1 while mouths are tuned separately. ## What still reads weakly - Winks: VRoid's closed-eye lash texture leaves stray marks on the woman and a stiff wedge on the youth. Needs a drawn lid curve (3D polyline like the mouth curve) rather than shape weights. - Smile ~ neutral on both (the closed smile line is faint; the eyes barely change at EYE_Fun 0.75). - Youth's sad: his mouth shapes barely move; the expression rides on the brows. - Vowels: A vs O too similar on the woman, I close to neutral, the youth's U a slit (MTH_U narrows his mouth hard). - Open mouths have angular edges (VRoid's low-poly mouth ring); a drawn outline or subdivision would round them. - Brows over the bangs are uninterrupted where strands cross; a per-strand gap would integrate them further. Total: 6 rounds, 12:43 to ~13:50 (~67 min including reviewer calls, which took ~15 s each). EOF cd $LOWMARCH_REPO && git add -A && git status --short && git commit -q -m "Expressions: brows drawn through the bangs, anime mouth inside, one-sided shape keys, tuned recipes - Painted renderer: brows lifted 4 cm toward the camera so they draw over the bangs (still hidden behind the skull when the head turns away), tinted toward the hair where they cross it. - Open mouths: VRoid's mouth texture coloured as a dark inside with upper teeth and a soft-topped tongue mound (composite pass), thin openings all dark. - tools/vrm.py: Fcl_X@L / @R recipe keys apply a shape to one side of the face (smug). - art/cast/expressions.txt: the 14 expression recipes, ALL_* split into BRW/EYE/MTH parts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: [redacted: session link]" && git log --oneline -1; ls $WORK/FINAL_* $WORK/NOTES.md; dateresult, 8 lines
A art/cast/expressions.txt M review/vroid-02/index.html M tools/vrm.py fc3970d Expressions: brows drawn through the bangs, anime mouth inside, one-sided shape keys, tuned recipes ~/Projects/lowmarch-bench/work/b/FINAL_woman.png ~/Projects/lowmarch-bench/work/b/FINAL_youth.png ~/Projects/lowmarch-bench/work/b/NOTES.md Fri Oct 30 01:46:55 PM PST 2026
Bashsource ~/Projects/lowmarch-bench/kit/env-b.sh && sed -i 's/Total: 6 rounds, 12:43 to ~13:50 (~67 min/Total: 6 rounds, 12:43 to 13:47 (64 min/' $WORK/NOTES.md && tail -1 $WORK/NOTES.md
command
source ~/Projects/lowmarch-bench/kit/env-b.sh && sed -i 's/Total: 6 rounds, 12:43 to ~13:50 (~67 min/Total: 6 rounds, 12:43 to 13:47 (64 min/' $WORK/NOTES.md && tail -1 $WORK/NOTES.md
result, 1 line
Total: 6 rounds, 12:43 to 13:47 (64 min including reviewer calls, which took ~15 s each).
SendMessage{"to":"team-lead","summary":"Track B done: 6 rounds, 64 min","message":"Track B is done: 6 of 6 rounds in 64 minutes (12:43 to 13:47). Commit fc3970d on bench-b. FINAL_woman.png and FINAL_youth.png are round 6. NOTES.md has every critique and my response to it.\n\nChanges:\n- Brows now draw over the bangs. The renderer moves them 4 cm toward the camera, so they still hide behind the skull when the head turns. Where they cross hair they take 68% of the hair's colour.\n- Open mouths were a flat brown blob. They now have a dark inside, a white band of upper teeth and a soft pink tongue (a new mouth material plus a composite-pass mouthInside).\n- tools/vrm.py: a recipe can apply a shape to one side of the face only (`Fcl_X@L` / `@R`). Smug uses it for a one-sided smile, one heavier lid and one raised brow.\n- Recipes: the combined ALL_* shapes are split into separate brow, eye and mouth shapes, so brows can be pushed past 1 and mouths tuned on their own. Saved as art/cast/expressions.txt.\n\nEyebrows: yes, over the bangs. On both bodies the bangs hide the brows, and the brows carry angry, sad and surprised. Terra pushed back every round, so I raised the hair tint but kept the brows visible.\n\nStill weak: both winks (stray lash marks), smile looks close to neutral, the youth's sad mouth barely moves, A vs O too similar, the youth's U is a slit, and open mouths have angular edges.","type":"message","recipient":"team-lead","recipient_kind":"name","content":"Track B is done: 6 of 6 rounds in 64 minutes (12:…"}
input
{ "to": "team-lead", "summary": "Track B done: 6 rounds, 64 min", "message": "Track B is done: 6 of 6 rounds in 64 minutes (12:43 to 13:47). Commit fc3970d on bench-b. FINAL_woman.png and FINAL_youth.png are round 6. NOTES.md has every critique and my response to it.\n\nChanges:\n- Brows now draw over the bangs. The renderer moves them 4 cm toward the camera, so they still hide behind the skull when the head turns. Where they cross hair they take 68% of the hair's colour.\n- Open mouths were a flat brown blob. They now have a dark inside, a white band of upper teeth and a soft pink tongue (a new mouth material plus a composite-pass mouthInside).\n- tools/vrm.py: a recipe can apply a shape to one side of the face only (`Fcl_X@L` / `@R`). Smug uses it for a one-sided smile, one heavier lid and one raised brow.\n- Recipes: the combined ALL_* shapes are split into separate brow, eye and mouth shapes, so brows can be pushed past 1 and mouths tuned on their own. Saved as art/cast/expressions.txt.\n\nEyebrows: yes, over the bangs. On both bodies the bangs hide the brows, and the brows carry angry, sad and surprised. Terra pushed back every round, so I raised the hair tint but kept the brows visible.\n\nStill weak: both winks (stray lash marks), smile looks close to neutral, the youth's sad mouth barely moves, A vs O too similar, the youth's U is a slit, and open mouths have angular edges.", "type": "message", "recipient": "team-lead", "recipient_kind": "name", "content": "Track B is done: 6 of 6 rounds in 64 minutes (12:…" }result, 1 line
{"success":true,"message":"Message sent to team-lead's inbox","msg_id":"8d675ebe-f614-420f-97e7-e3ca707a4574","routing":{"sender":"bench-b","senderColor":"yellow","target":"@team-lead","targetColor":"red","summary":"Track B done: 6 rounds, 64 min","content":"Track B is done: 6 of 6 rounds in 64 minutes (12:…"}}
agent
+1:04:05I used all 6 rounds in 64 minutes (12:43 to 13:47), well within the 90-minute budget. Round 6 was the best, so the final sheets are copies of it. The code is committed as fc3970d on bench-b.
What changed:
- Brows draw over the bangs. The renderer moves the brows 4 cm toward the camera, so they still hide behind the skull when the head turns away. Where they cross hair they take 68% of the hair's colour, so they read as seen through the hair.
- Open mouths were a flat brown blob. They now have a dark inside, a white band of upper teeth and a soft pink tongue rising from the lower lip. Very thin openings stay all dark.
- One-sided shapes: a recipe can now apply a shape to one side of the face only (
Fcl_X@L/@R, intools/vrm.py). Smug uses it for a one-sided smile, one heavier lid and one raised brow. - Recipes: I split VRoid's combined expression shapes into separate brow, eye and mouth shapes. That lets the brows go past full strength while each mouth is sized on its own. The final 14 are saved in the repo as
art/cast/expressions.txt.
Eyebrow decision: yes, over the bangs. On both bodies the bangs hide most of each brow, and the brows carry angry, sad and surprised. The reviewer objected every round that they looked painted on. I raised the hair tint each time but kept them visible. At 30 degrees they keep their angle and stay on the face.
Still weak: both winks (stray lash marks on the woman, a stiff wedge on the youth), smile looks close to neutral, and the youth's sad mouth barely moves. In lip sync, A and O are too alike and the youth's U is a slit. Open mouths also have angular edges.
Files are in ~/Projects/lowmarch-bench/work/b:
- FINAL_woman.png
- FINAL_youth.png
- NOTES.md