[art] #9-4: visual verification via Playwright + smoke screenshot #21
Labels
No labels
blocked:needs-attention
blocked:needs-decision
blocked:needs-decompose
blocked:needs-design
blocked:needs-triage
blocked:unclassified
bug
documentation
enhancement
gsd-spec
in-progress
needs-decompose
priority:high
priority:low
priority:medium
quickfix
test
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/cybertactics#21
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent-Issue: #9
Depends on: #9-3 (UI wiring complete).
Visual verification of the wired portraits using Playwright:
make run-weband loadhttp://localhost:8000naturalWidth > 0)tools/playwright_smoke.png(regenerate or update)Acceptance:
tools/playwright_smoke.pngmake ci(which includes Playwright smoke) passesAdd an assertion to
tools/playwright_smoke.pyif one is not already there: every operative row should have an<img>or canvas-drawn portrait with non-zero dimensions.kilo-gsd launcher (t_4deb551a) — substrate check failed; not dispatching.
Two blockers prevent dispatch:
ruff preflight dirty.
ruff check .exits 1 against~/Projects/cybertactics:kilo-gsd.pyrunsruff check .as a hard preflight before any phase; there is no--skip-preflightand no scoping hook. Auto-fixable withruff check --fix .but the launcher is forbidden from editing the repo. Until the fix lands, every kilo-gsd dispatch on this repo will be blocked regardless of issue scope.Hard dependency unmet. This issue's body says "Depends on: #9-3 (UI wiring complete)." Forgejo issue #20 (
[art] #9-3: wire portraits into OPERATIVES cards + SELECTED panel) isstate=openwith no commit onorigin/mainreferencing #20, and the repo currently has no portrait code, no portrait PNGs, no<img>tags in OPERATIVES cards, and no portrait rendering in the SELECTED panel. The verification in this issue's acceptance criteria cannot meaningfully proceed until #20 lands.Recommended sequencing: dispatch #18 (#9-1: portrait PNGs) -> #19 (#9-2: atlas entries) -> #20 (#9-3: wiring) -> #21 (#9-4: this verification), and unblock the repo-wide ruff preflight first via a separate lint-cleanup fixit.
Card blocked with
kind=capability. Operator action required.cybertactics#9-4 verification shipped on main @
954bd87.Title-screen portraits: every .oprow must contain an
decoded (naturalWidth>0) and rendered >=64x64 for all 6 squad members
(vex, diaz, rook, sable, jolt, halo). PNGs at web/assets/portraits/*.png
are 128x128 natural; the layout sizes them at 96x96 per the registry
contract (verified rendered 94x94 in CI viewport).
SELECTED-panel portrait: after selectUnit(), #sel must render an
with naturalWidth>0 and rendered >=64x64. Same
404-guard as the title-screen block.
Screenshots: tools/playwright_smoke.png (post-deploy, shows
SELECTED panel) and tools/playwright_title.png (title screen, shows
operative portrait grid) -- both regenerated by
make ci. Bothgitignored to match the existing convention;
make cleanremoves them.make ci: 7 node smokes + gdlint + Playwright UI smoke + Godot
headless import. 8/8 consecutive runs PASS (was 4/8 before the
sim-advanced flake guard was added).
Bonus fix: the sim-advanced assertion in section 5 was racing a
focus-snap event (
snapPause(..., "event")in web/js/game.js fireswhenever an enemy spots a squad member, setting G.speed=0). Re-pinning
G.speed=2 right before sampling t0 closes the race -- re-pin is
idempotent and the assertion still passes the legitimate pause cases.
Direct push to main per the quickfix lane contract (AGENTS.md).