video-workbench/handoff/2026-06-24-character-consis...

250 lines
7.8 KiB
Markdown

# R6 Notification/Wakeup And S-16 Repair Handoff
Date: 2026-06-24
Project:
```text
projects/2026-06-23-在路上
```
Task:
```text
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency
```
## Status
The polling-based slide workflow trial is basically complete.
Do not repair any image in the current session. The user plans to commit the current project state and start a fresh session for R6.
Latest user decision:
- `session-08` mechanically passed the 4-slide package test.
- `s16-v2-image.png` is not visually accepted.
- No repair should be done before the next session.
- R6 should replace polling with notification/wakeup behavior:
- main session sends task and exits;
- child session completes work;
- child/session completion activates or wakes the main session.
- R6 should also redo `S-16`.
## Read First In R6
Read these before acting:
```text
AGENTS.md
docs/workflows/slide-task-orchestration.md
docs/workflows/slide-task-templates.md
projects/2026-06-23-在路上/project.md
projects/2026-06-23-在路上/execution-plan.md
projects/2026-06-23-在路上/slides/slides.md
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/task-plan.md
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/task-log.md
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/session-08/child-session-handoff.md
```
Use this handoff as the R6 task entrypoint after the user commits current work.
## Mechanism Summary
The current successful production boundary is:
1. A clean user-visible child session owns brief and packet generation.
2. The child session scans slide folders and resolves append-only next versions.
3. The child session writes and confirms `sNN-vN-brief.md` plus `session-XX/packets/sNN-vN-slide-agent-packet.md`.
4. Only then does it launch one internal one-shot slide worker.
5. The worker writes prompt/image/return only.
6. Review remains disabled unless the task explicitly asks for it.
Keep this boundary in R6.
Do not reuse closed workers from prior sessions.
## Context And Timing Results
Observed context/timing from recent package tests:
| Session | Scope | Result | User-observed context | Time |
| --- | --- | --- | --- | --- |
| `session-06` | `S-07`, then `S-08/S-09` | successful outputs accepted; `s08-v2` preserved as incomplete transport-failure evidence and retried as `s08-v3` | about `187K` by end | package observations included `S-07` at `12m22s`; Package 2 at `35m3s` with reconnect |
| `session-07` | `S-11/S-12/S-13` | completion gate pass; all three images accepted | `157K` | `30m5s` |
| `session-08` | `S-15/S-16/S-17/S-18` | completion gate pass; `S-16` image rejected | not reported in current session | thread duration about `36m16s`; child handoff visible span about `32m12s` |
These numbers are user/runtime observations, not child-session self-reported token counts. Child sessions could not see their own context usage.
## R6 Primary Goal
Test real notification/wakeup behavior instead of polling.
Required behavior:
```text
main session sends task -> main session exits / stops waiting
child session completes task -> completion activates or wakes main session
main session resumes and reads compact handoff
```
Do not simulate this with hidden parent polling.
In the new session, first discover whether the app exposes a real notification, automation, wakeup, or thread-resume tool. Use `tool_search` for likely tool names such as:
```text
automation_update
wakeup
notification
send_message_to_thread
read_thread
create_thread
spawn_agent
```
If a real activation/wakeup mechanism is unavailable, record a blocker and stop rather than continuing with ordinary polling while calling it notification.
## R6 Slide Scope
Use R6 to redo:
```text
S-16
```
Expected next version if no new `S-16` files are added before R6:
```text
s16-v3
```
But R6 must scan `projects/2026-06-23-在路上/slides/s16/` and resolve the next unused version before writing.
Do not overwrite:
```text
projects/2026-06-23-在路上/slides/s16/s16-v2-*
```
## S-16 Failure Record
`s16-v2-image.png` failed visual acceptance.
User-provided reason:
```text
没有达成:横向大远景,路从画面一侧切向远方,人物极小。
与 s15 的区别不大。
```
R6 repair target:
- horizontal extreme wide shot;
- road cuts from one side of the frame toward the far distance;
- traveler is extremely small;
- image must clearly differ from `S-15`;
- preserve landscape-led road documentary / poetic realism;
- do not turn the traveler into a portrait or medium-body subject.
Useful current artifacts:
```text
projects/2026-06-23-在路上/slides/s15/s15-v2-image.png
projects/2026-06-23-在路上/slides/s16/s16-v2-image.png
projects/2026-06-23-在路上/slides/s16/s16-v2-prompt.md
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/session-08/child-session-handoff.md
```
Treat `s15-v2-image.png` as a contrast reference for what `S-16` should not repeat too closely.
## Required Production Route
For the S-16 repair prompt:
- Use the `gpt-image-2` Skill Advisor / host-native workflow.
- Run the mode check:
```powershell
node C:\Users\wangq\.agents\skills\gpt-image-2\scripts\check-mode.js --json
```
- Read the relevant `gpt-image-2` template/reference before drafting.
- Record the Skill mode, template/reference path, and source files actually read.
- Use:
```text
projects/2026-06-23-在路上/visual-system/style/style-prompt-master.md
projects/2026-06-23-在路上/visual-system/characters/character-reference-registry.md
```
- Load actual image references into visible generation context when character continuity matters.
- A local path in prompt text is traceability only; it does not count as loading the reference.
## R6 Suggested Task Shape
Recommended R6 scope:
```text
running mode: prompt and generate
scope: S-16 only
review: none unless user explicitly asks
overwrite allowed: no
main-session mechanism focus: notification/wakeup, not image batch throughput
completion gate: required
```
Suggested child-session path:
```text
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/session-09/
```
Use a new clean visible child session unless the notification/wakeup tool contract requires another carrier. If a different carrier is needed, record why.
## Completion Gate For R6
The child/session handoff must include:
- notification/wakeup mechanism used, or blocker if unavailable;
- whether main session truly stopped waiting before child completion;
- slide version resolved by folder scan;
- brief and packet child-owned before worker launch;
- worker id;
- prompt/image/return paths;
- image hash;
- review mode/result;
- no overwrite;
- no duplicate worker;
- no review file if review is disabled;
- context usage if visible, otherwise parent/user observation field;
- parent inspection recommendation.
## Non-Goals
- Do not repair `S-16` in the current session.
- Do not overwrite `s16-v2`.
- Do not run another polling-based package and call it notification.
- Do not broaden to more slides unless the user explicitly changes the R6 scope.
- Do not invoke CCPE.
- Do not call Minimax MCP or external vision/review tools unless explicitly authorized.
## Current File Updates Already Made
The current session updated:
```text
projects/2026-06-23-在路上/project.md
projects/2026-06-23-在路上/execution-plan.md
projects/2026-06-23-在路上/slides/slides.md
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/task-plan.md
projects/2026-06-23-在路上/tasks/2026-06-24-character-consistency/task-log.md
```
These files record:
- package-size trials through 4 slides;
- `session-07` 3-slide package accepted with context `157K` and time `30m5s`;
- `session-08` 4-slide package flow gate pass;
- `s16-v2` visual failure and deferred repair;
- R6 direction: notification/wakeup plus S-16 append-only repair.