video-workbench/projects/2026-06-23-在路上/slides/broad-generation-self-audit...

260 lines
9.7 KiB
Markdown

# Broad Generation Self-Audit V1
## Status
- Document status: issue report.
- Trigger: user flagged identity drift in `s14` and questioned whether accepted character references were actually used.
- Scope: broad-run process from `s02` through interrupted `s34`.
- Generation state: paused. Do not continue broad generation until this report is reviewed and the process is repaired.
## Short Conclusion
The user criticism is correct.
The broad-run process simplified too much. It preserved the general visual direction in text, but it did not preserve the project execution contract that every shot should have traceable prompt/spec artifacts and that visible character shots should actively use the accepted character anchors.
The most serious failure is character-reference handling:
- Accepted character images existed under `visual-system/characters/`.
- The broad-run prompts only used a textual character description.
- No per-shot prompt recorded which character reference image should be used.
- The host image-generation calls did not receive explicit character reference images.
- Result: close and medium character shots drifted away from the accepted v2 character.
## What Was Actually Done
Broad-run generated project images for:
```text
s02-s09, s11-s34
```
Existing accepted core shots were skipped:
```text
s01, s10, s46, s47, s51
```
The broad run wrote:
- `slides/broad-generation-plan-v1.md`
- `slides/broad-generation-run-v1.md`
- `slides/sNN/sNN-v1-image.png` for generated shots
It did not write per-shot:
- `slides/sNN/sNN-v1-brief.md`
- `slides/sNN/sNN-v1-prompt.md`
## Confirmed Issues
### P0 - Character Anchor Not Actually Used For Visible Character Shots
Expected:
- Visible character shots should reference the accepted v2 character anchor or derived slices.
- The prompt/spec should explicitly say which reference image is used and why.
- Close / medium character shots should not proceed if the active generation path cannot use the reference image.
Actual:
- The broad-run shared kernel described the traveler in words.
- It did not name per-shot character reference files.
- It did not pass reference images into the generation call.
Accepted character basis that should have been used:
```text
visual-system/characters/character-anchor-v2-codex-posture-test.png
visual-system/characters/character-anchor-v2-front-reference-crop-tight.png
visual-system/characters/character-anchor-v2-side-reference-crop-tight.png
visual-system/characters/character-slice-front-v2-from-anchor.png
visual-system/characters/character-slice-side-v2-from-anchor.png
visual-system/characters/character-slice-back-v2-from-anchor.png
visual-system/characters/character-slice-walk-side-v2-from-anchor.png
visual-system/characters/character-slice-walk-back-v2-from-anchor.png
```
Observed impact:
- `s14`: invalid candidate. The face does not match the v2 anchor, black rectangular glasses are missing, and the person reads as another man.
- `s33`: invalid candidate. The face again does not match the v2 anchor and the glasses are missing.
- `s21`: posture risk. Back/shoulder line reads more curled than the approved "upright chest / not hunched" direction.
- `s05`: medium risk. It preserves backpack / long-coat language but the body silhouette is not actually locked to the accepted slice.
- `s25`: lower risk than `s14` / `s33`, but still not reference-locked because visible hair / face edge / backpack are generated from text only.
Process conclusion:
For any shot where identity matters, text-only prompting is insufficient.
### P0 - Per-Shot Prompt / Brief Trace Was Removed Too Aggressively
Expected:
- Simplify review gates, not remove traceability.
- Even without human review, each generated shot should keep enough local files to debug drift quickly.
Actual:
- 32 generated broad-run shot images lack `sNN-v1-brief.md` and `sNN-v1-prompt.md`:
```text
s02, s03, s04, s05, s06, s07, s08, s09,
s11, s12, s13, s14, s15, s16, s17, s18,
s19, s20, s21, s22, s23, s24, s25, s26,
s27, s28, s29, s30, s31, s32, s33, s34
```
Observed impact:
- It is harder to isolate whether a bad image came from shot interpretation, character reference omission, style-anchor omission, or host generation variance.
- The broad-run log contains compact prompt fills, but not full final rendered prompts.
- This weakens the `gpt-image-2` Skill trace requirement.
### P1 - File Naming Is Inconsistent With Repo-Level Rule
Repo-level rule in `VIDEO_WORKBENCH.md` says files inside `sNN/` should carry the `sNN` prefix and use:
```text
sNN-vN-type.ext
```
Broad-run and five-shot artifacts used non-prefixed v1 names for image, brief, and prompt artifacts.
This cleanup renamed existing shot artifacts to the repo-level `sNN-v1-type.ext` convention.
This naming mismatch did not cause the identity drift, but it is a real workflow inconsistency.
Practical consequence:
- Inside one `sNN/` directory, a non-prefixed image name is readable.
- Across batch tooling and file search, `sNN-v1-image.png` is more robust and matches the repo-level convention.
### P1 - Style Anchors Were Also Reduced To Text
Expected:
- The common style board and A/B/C/D anchors should be explicitly listed as references in per-shot prompt specs.
- Style reference role should be clear: composition reference, palette reference, mood reference, or avoid-drift reference.
Actual:
- The broad-run shared kernel included a general style paragraph.
- Per-shot prompt fills did not explicitly name the style board or A/B/C/D reference assets.
- Generated landscape / environment shots may still look acceptable, but the process did not preserve the reference contract.
This is less severe than character drift because environment shots tolerate more variation, but the same process weakness is present.
### P1 - `s34` Has Image File But Not Matching Status / Run Log Entry
Observed:
- `slides/s34/s34-v1-image.png` exists.
- Cleanup updated `slides/slides.md` to mark `s34` as `generated`.
- Cleanup added an `s34` result entry to `slides/broad-generation-run-v1.md`.
Cause:
- The user interruption happened after the image copy and before run-log / table update.
This execution-state inconsistency has been repaired before further generation.
### P2 - The Broad-Run Queue Did Not Classify Shot Risk
Expected:
- Broad generation can be light, but not all shots have the same risk.
- Face / half-face / medium human shots require stricter reference handling than roads, puddles, fire, rust, or boot details.
Actual:
- The run treated all missing shots as one queue.
- The only difference was a short prompt fill per shot.
Better classification:
| Class | Examples | Required Handling |
| --- | --- | --- |
| Environment-only | `s04`, `s12`, `s20`, `s22`, `s26` | Batch prompt is acceptable if style references are named. |
| Object/body detail | `s03`, `s08`, `s13`, `s29`, `s34` | Use character prop reference when visible; prompt file still required. |
| Distant human | `s02`, `s06`, `s07`, `s09`, `s15`, `s16`, `s23`, `s24` | Use silhouette / coat / backpack reference; less strict than close shots. |
| Medium human | `s05`, `s21`, `s27` | Must use relevant character slice as reference. |
| Close / face human | `s14`, `s25`, `s33` | Must use face / side reference image; do not generate if image-reference path is unavailable. |
## Root Cause
The intended simplification was:
> Remove per-shot human review gates.
The implemented simplification became:
> Remove per-shot prompt artifacts and reduce anchors to text.
That crossed the safety boundary for this project.
The correct simplification should be:
- no per-shot user approval;
- no full review document unless repair is needed;
- but still one per-shot brief/prompt with explicit source and reference list;
- and stricter reference handling for visible character shots.
## Current Asset Disposition
Do not mark broad-run shots as accepted.
Recommended status:
| Group | Action |
| --- | --- |
| `s14`, `s33` | Mark `repair-needed`; regenerate with character reference or external reference-capable tool. |
| `s21` | Mark `needs-character-posture-check`; likely regenerate if strict posture matters. |
| `s05`, `s25` | Mark `needs-character-consistency-check`; may be salvageable but not reliable. |
| Environment / motif shots | Keep as broad-run candidates for batch review, but backfill prompt files. |
| `s34` | Repair bookkeeping first: add run-log entry or mark as interrupted candidate; update table only after decision. |
## Required Process Repair Before Continuing
1. Stop current broad generation.
2. Amend `broad-generation-plan-v1.md`:
- keep no per-shot human gate;
- require per-shot `sNN-v1-brief.md` and `sNN-v1-prompt.md`;
- require explicit reference list in every prompt;
- forbid text-only generation for face / medium human shots.
3. Create a shot-risk classifier:
- environment-only;
- object/body detail;
- distant human;
- medium human;
- close / face human.
4. Backfill prompt/brief files for already generated candidates before further generation.
5. Quarantine or mark high-risk generated shots:
- `s14`;
- `s33`;
- `s21`;
- `s05`;
- `s25`.
6. Decide the reference-capable generation path:
- If the active host image tool cannot explicitly use reference images, do not use it for identity-critical shots.
- Use it only for environment-only or low-identity shots, or switch identity-critical shots to a tool/workflow where the reference images can actually be supplied.
## Revised Lightweight Rule
The next workflow should be:
```text
per-shot brief + per-shot prompt + no per-shot human review + batch-level user review
```
Not:
```text
batch log only + text-only anchors + no traceable per-shot prompt
```
This keeps the project lightweight while preserving the two things that matter here:
- identity control;
- prompt/debug traceability.