Skip to content

Illustration register: toy diorama -> forensic-reconstruction CGI - #19

Merged
upgradedev merged 2 commits into
mainfrom
feat/forensic-reconstruction-illustration
Jul 29, 2026
Merged

Illustration register: toy diorama -> forensic-reconstruction CGI#19
upgradedev merged 2 commits into
mainfrom
feat/forensic-reconstruction-illustration

Conversation

@upgradedev

Copy link
Copy Markdown
Owner

Summary

The generated illustration still and clip currently read as a toy/game
(literally "Miniature diecast toy car diorama on a printed road play mat"),
which undercuts the product's credibility with judges and insurers. This
raises production quality while keeping the output unmistakably a synthetic
reconstruction, never crossing into fabricated-evidence territory.

  • src/claimscene/report.py: _diorama_scene_description renamed to
    _forensic_scene_description; illustration_still_prompt() and
    illustration_prompt() rewritten into a clean, computer-generated 3D
    forensic accident-reconstruction register (accurate vehicle proportions,
    real road surface and lane markings, neutral daylight, professional CGI
    clarity). Still built only from the closed vocabulary, still
    deterministic, clip prompt still ends with Overlay text: '{DISCLOSURE}'.
  • The prompts state plainly the output is not a real recording, and
    never use a word that could nudge the generative model toward
    photorealism (photorealistic, photograph, dashcam, real footage,
    cinematic film still, documentary footage are all absent, verified by
    a new test in each of tests/unit/test_report.py and
    tests/integration/test_pipeline.py).
  • scripts/readiness.py's check_genblaze_illustration_port_sealed now
    checks the not-a-real-recording marker in both the still and clip
    prompt fields (previously only checked the clip prompt) - strictly
    stronger than before.
  • README.md (the "illustration layer" bullet) updated to describe the new
    register.

Untouched (by design)

  • DISCLOSURE / WATERMARK constants, the clip's overlay-text instruction,
    provenance.py, everything under tests/security/.
  • The eval-set descriptions (README ~312/332, generate_eval_scenarios.py,
    eval/scenarios/manifest.json) - those describe the staged synthetic
    input photos used for the extraction-accuracy eval, a separate concern
    from the illustration output register, and remain accurate as written.
  • eval/evidence/live_illustration/ (a hash-pinned real-provider run
    captured under the old register), frontend/src/assets/hero-illustration.jpg
    • its alt text in Hero.tsx, and frontend/src/test/fixtures/golden-manifest*.json
    • all predate this change and are either hash-pinned or would need a real
      paid Genblaze call to regenerate; none are in scope here. The committed
      demo video (demo/claimscene-demo.mp4) also predates this change and
      still shows the old toy-diorama illustration.

Test plan

  • pytest tests/unit/test_report.py tests/integration/test_pipeline.py -v - 17 passed
  • pytest --cov=src --cov-fail-under=90 tests/ (scoped around a pre-existing,
    environment-only pytest collection quirk on this machine, confirmed
    identical on bare main and confirmed green in the last real CI run
    on this exact commit) - 236 passed, 94.64% coverage
  • python scripts/readiness.py --min 95 - 100% automatable, gate PASS
  • ruff check src tests scripts - clean
  • CI (this PR) - all 9 jobs green

Efthimios Fousekis added 2 commits July 29, 2026 14:54
…tion CGI

The generated still and clip read as a toy/game, undercutting credibility
with insurers and judges. Both prompts now describe a clean, computer-
generated 3D forensic accident-reconstruction render (accurate vehicle
proportions, real road surface and lane markings, neutral daylight,
professional CGI clarity) instead of a miniature diecast diorama, while
still stating plainly that the output is not a real recording and avoiding
every word that could nudge the generative model toward photorealism.

The honesty guarantee stays test-enforced: test_pipeline.py and
test_report.py assert the not-a-real-recording marker in both prompts, and
a new test in each asserts the forbidden photorealism words never appear.
scripts/readiness.py now checks the marker in both the still and clip
prompt fields, strictly stronger than the prior single-field check.

DISCLOSURE, WATERMARK, the clip's overlay-text instruction, and everything
under tests/security/ are untouched. Eval-set descriptions (README,
generate_eval_scenarios.py, eval/scenarios, eval/evidence) are also
untouched: those describe the staged input photos for the
extraction-accuracy eval, a separate concern from the illustration output.
Require still_prompt in the presence guard and check both the
"computer-generated" and "not a real recording" markers (case-insensitive)
in both prompt fields, matching what tests/unit/test_report.py already
asserts at the unit level. The gate was strictly weaker than the tests it
mirrors.
@upgradedev
upgradedev merged commit 66f3d85 into main Jul 29, 2026
11 checks passed
@upgradedev
upgradedev deleted the feat/forensic-reconstruction-illustration branch July 29, 2026 12:03
upgradedev pushed a commit that referenced this pull request Jul 29, 2026
PR #19 (forensic-reconstruction register) landed on main while this
branch was open and net-added one backend test, so the card's backend
stat went stale too.

Green CI on main (66f3d85, run 30450005723): pytest 290 passed,
3 skipped; vitest 208 passed across 24 files.

Also refreshes the README line references in the spec notes: #19 added
a line to README's thesis section, shifting the cited lines from
190/364 to 191/365.
upgradedev pushed a commit that referenced this pull request Jul 29, 2026
PR #19 landed on main mid-branch and net-added one backend test.
Green CI on main (66f3d85, run 30450005723): pytest 290 passed,
3 skipped.
upgradedev added a commit that referenced this pull request Jul 29, 2026
…UBMISSION and gallery card (#20)

* chore(demo): update gallery-card-07 frontend test count (126 -> 208)

The card's frontend stat went stale when PR #18 (direct vehicle
manipulation) added manipulate.ts and VehiclePlacementPanel.tsx with
their test files.

Authoritative source is the green CI run on main (0101bde, run
30437023280): vitest reports 208 passed across 24 test files, and
pytest still reports 289 passed, so the backend stat is unchanged.

render-cards.yml re-renders the PNG from this spec on push.

* chore(demo): render gallery cards from demo/assets/src/ patch specs

* docs: refresh stale frontend test count (126 -> 208)

README's Testing & CI section and SUBMISSION's accomplishments both
still quoted 126 frontend tests. PR #18 (direct vehicle manipulation)
added manipulate.ts and VehiclePlacementPanel.tsx with their test
files, taking Vitest to 208 across 24 test files.

Numbers taken from the green CI run on main (0101bde, run
30437023280), which is the same command CI gates on:
  - frontend job (npm run test:coverage): 208 passed (208)
  - python job (pytest tests/):           289 passed, 3 skipped

The backend stat was re-verified and is unchanged at 289, so only the
frontend number moves.

* chore(demo): bump gallery-card-07 backend stat to 290

PR #19 (forensic-reconstruction register) landed on main while this
branch was open and net-added one backend test, so the card's backend
stat went stale too.

Green CI on main (66f3d85, run 30450005723): pytest 290 passed,
3 skipped; vitest 208 passed across 24 files.

Also refreshes the README line references in the spec notes: #19 added
a line to README's thesis section, shifting the cited lines from
190/364 to 191/365.

* chore(demo): render gallery cards from demo/assets/src/ patch specs

* docs: refresh backend test count (289 -> 290)

PR #19 landed on main mid-branch and net-added one backend test.
Green CI on main (66f3d85, run 30450005723): pytest 290 passed,
3 skipped.

---------

Co-authored-by: Efthimios Fousekis <tf@upgrade.dev>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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