Skip to content

Restore render-impact screenshot evidence in normal CI #146

Description

@alexeygrigorev

Parent epic: #11
Related accepted workflow baselines: #104, #113, #143
Observed on exact main SHA: 4b8c852681c0ace77f0da94b7f7c38e807c42984

Outcome

Normal push CI must produce the required screenshot evidence whenever the verification planner marks a change as render-impacting, so the aggregate gate can validate a release instead of rejecting an otherwise green run and skipping publish/deploy.

Confirmed failure

Run: https://github.com/DataTalksClub/website/actions/runs/31691360510

  • resolve-release, classification, quality, Django, Playwright, and container all passed.
  • ci-gate.json is correctly fail-closed with verdict=failure.
  • The plan marked render.impact=true because Implement confirmed design-audit Phase 1 quality fixes #144 changed courses/templates/homework/stats.html and course CSS.
  • The verification report has screenshots in the skipped bucket with reason=required_result_missing.
  • .github/workflows/ci.yml has no screenshot component/result for render-impact pushes.
  • Publish/deploy were therefore skipped; this is a deterministic workflow/evidence defect, not a product test failure.

Scope

  • Add the normal-CI screenshot component/job or otherwise wire the existing screenshot capture/evidence contract into the push workflow for render-impact selections.
  • Use the planner's exact screenshot requirements and record digest-bound evidence through the existing ci.verification contract.
  • Keep screenshots synthetic and free of credentials/PII; preserve the fail-closed aggregate gate.
  • Add workflow/contract tests proving render-impact changes cannot finish without a valid screenshot result, while non-render changes remain allowed to use not_applicable.
  • Verify the accepted Fix deterministic Scheduled full regression workflow failures #143 scheduled workflow contract remains unchanged.

Non-goals

  • Do not weaken ci.gate.normal, allow pending screenshot evidence, or mark render-impact screenshots not applicable.
  • Do not change application behavior, templates, CSS, deployment, or product routes.
  • Do not delete screenshot assertions or bypass evidence validation.

Acceptance criteria

  • A normal push with render-impacting template/static changes runs the screenshot component using the planner-authorized command/profile and records a valid digest-bound result.
  • The aggregate gate accepts a complete render-impact run only when screenshot evidence is present, valid, and tied to the exact source/plan/environment; missing or malformed evidence still fails closed.
  • A non-render push retains the existing screenshots: not_applicable behavior.
  • Workflow tests cover job dependencies, exact command/profile binding, artifact upload, evidence recording, and fail-closed missing-result behavior.
  • Synthetic desktop/mobile captures are inspected for the changed surface; no credentials, PII, debug page, overflow, or minified template output appears.
  • make test-ci, focused Django/Playwright checks, git diff --check, and the exact normal push workflow complete successfully on the candidate.
  • A post-merge normal CI run at the exact merged SHA is terminal green and reaches publish/deploy gates.

Required process

Follow _docs/PROCESS.md: groomed issue, engineer frozen uncommitted handoff, independent tester PASS, PM acceptance, local merge/push, then on-call observes the exact push run. Do not manually rerun the failed SHA as proof.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Must-have or release-blockingbugSomething isn't workingfrontendArea: frontendoperationsArea: operationstestingArea: testing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions