Skip to content

fix(mockmed): stabilize textarea render metrics#227

Draft
abrichr wants to merge 1 commit into
mainfrom
agent/mockmed-textarea-pixel-stability
Draft

fix(mockmed): stabilize textarea render metrics#227
abrichr wants to merge 1 commit into
mainfrom
agent/mockmed-textarea-pixel-stability

Conversation

@abrichr

@abrichr abrichr commented Jul 21, 2026

Copy link
Copy Markdown
Member

What changed

  • make MockMed's #note textarea use an explicit font stack and line height
  • refresh the reviewed public-artifact inventory for that shipped CSS asset
  • keep the existing strict baseline contract: an unperturbed record/replay must use the template rung with zero heals

Root cause

Exact-main CI run 29845581250 passed 2,818 tests on macOS and failed only TestBaselineControl::test_baseline_passes_all_template. The retained report shows step_008 (the unlabeled Note textarea) falling from template to geometry, producing one governed heal while the workflow still completed correctly.

The failed run's recorded crop was 320x128 at y=226, while the replayed native <textarea rows="6"> was about six pixels taller. MockMed set a font size but left the form control's font family and normal line height to Chromium/macOS UA defaults. Because recording and replay intentionally use separate browser processes, host font metrics could differ and make this no-drift fixture look drifted.

This is fixture nondeterminism, not a relaxation of the resolver or healing contract. The prior green macOS exact-main run used the byte-identical recorded template (sha256: 9c6d01b8...) and resolved all eight anchors by template; Ubuntu on the failed commit also resolved all eight by template.

Impact

The synthetic reference app now has deterministic form-control geometry across the separate record/replay browsers. Product runtime thresholds, healing behavior, and the zero-heal assertion are unchanged.

Verification

  • pre-fix local headless repetition: 4/4 passed (confirming intermittency)
  • post-fix isolated headless baselines: 4/4 passed, each heal_count=0, template=8
  • tests/e2e/test_cosmetic_drift.py: 16/16 passed in 177.12s
  • git diff --check

No headed browser, local input injection, production mutation, provider call, or release was used.

@abrichr
abrichr force-pushed the agent/mockmed-textarea-pixel-stability branch from 99724d9 to 7192b05 Compare July 21, 2026 16:52
@abrichr

abrichr commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

Dependency/integration update for the current exact heads:

#227's standalone e2e-browser failure exposes the geometry-ambiguity behavior fixed by #226; it is not a reason to replace this CSS stabilization with a fixed-height/low-information crop workaround.

The combined tree passed the focused headless browser suite: 18 passed in 187.84s. Baseline was consistently 8/8 template with zero heals. Under MoveDrift, step_008 resolved at the correct (344, 296) point and the following typed input was verified without retry; the healed rerun returned to 8/8 template with zero heals.

Recommended order: merge #226 first after its own required CI is green, rebase this PR onto the new main, then rerun required/full macOS CI before merging this PR.

@abrichr
abrichr force-pushed the agent/mockmed-textarea-pixel-stability branch from 7192b05 to 21ca9ed Compare July 21, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant