HANDOFF: vv webcam plan locked; drop the unverified vertical-preview landmine

Planning-only session: no code, no build, no test run. The creator's vv
(9:16) webcam feature is now specified, and HANDOFF carries the locked
rules plus the code facts needed to build it without re-hunting:

- vv Live: small tile, circle OR rect (creator's choice), snapped to one
  of six spots (top/bottom x L/C/R). vv Chat: rect only, plus enlarge to
  fill one 607x540 area (exactly 50% of the frame), top or bottom.
  16:9 and Starting/BRB/Ending unchanged.
- Placement by tap/click-drag with snap, like the socials, plus manual
  entry in properties. vv keeps its own camera layout per scene, so the
  16:9 layout survives switching modes (creator-confirmed).
- Geometry only: preview and compositor both read the element's own
  X/Y/W/H + ClipShape, so the two-tile look falls out of the camera
  covering half the band - no capture, chat-box or blit-path change. The
  existing per-scene clamp already permits 607x540.

Withdraws the HANDOFF landmine "vertical-format regression ... no longer
shrinks the capture border in the preview": never verified, and wrong as
stated - the creator confirms vv dims the two bands astride the centre
band. It cost this session a pointless question.

MyMistakes.md records the session-history search recipe (the creator's
turns live in session_message, NOT part - a hit in part can be my own
text echoing the phrase) and the ask-don't-check lesson plus the
creator's standing reply-format directives.
This commit is contained in:
2026-10-17 09:02:59 -07:00
parent cdf82f688d
commit 2a15be21bd
2 changed files with 139 additions and 54 deletions
+54
View File
@@ -1645,3 +1645,57 @@ semantics* — anchored-capture vs follow-the-box — before building any "zoom"
captures ALL layers with an extra layer in the fixture and assert it appears; (3) "draw above
everything" is a compositor ordering property (skip in the layer loops + blit last), not a z-index
of the element among the others.
## 2026-10-17 — Your own conversation history is in `session_message`, NOT `part`
I was asked to repeat the creator's original query verbatim. After a compaction I had only the summary,
so I searched the session store and landed on the wrong table twice. In `part` my search for the
creator's phrases returned hits — but they were **my own reasoning text quoting the phrase back**, which
looks exactly like a real hit and sent me chasing roles (`message.data` role), then
`instruction_entry`/`instruction_blob` (which do **not** hold prompts at all).
The creator's turns live in **`session_message`**, one row per turn: `type='user'`, the text inside the
JSON `data.text`.
```bash
# find the session by any distinctive phrase the creator used
sqlite3 ~/.local/share/opencode/opencode.db \
"SELECT DISTINCT session_id FROM session_message WHERE data LIKE '%<phrase>%';"
# then dump that session's turns in order
sqlite3 ~/.local/share/opencode/opencode.db \
"SELECT seq, json_extract(data,'\$.text') FROM session_message \
WHERE session_id='ses_…' AND type='user' ORDER BY seq;"
```
Lessons: (1) when compacted and unsure *what was asked*, query the store — never reconstruct the
creator's words from a summary; (2) a phrase hit in `part` may be my own echo of it, so check the
table's `type` before trusting a match; (3) this is the fix for "I can't search my own history" — it is
one query away, and the creator found their own query manually while I guessed.
## 2026-10-17 — I asked the creator to verify a preview visual I could have looked at
Planning the vv webcam feature, I asked: "when you select the vertical tier, does the preview actually
dim outside the band?" The answer was, in effect, *of course — that's the standard*. Two failures
stacked:
1. **I propagated an unverified claim.** My only reason to doubt it was a `HANDOFF.md` landmine
("vertical-format regression … no longer shrinks the capture border", marked STALE/root-cause-
unknown). It had never been verified, and it was **wrong** as stated. A stale, unverified handoff
line is a question-generator, not a fact — check it against the code or the app before letting it
shape what I ask.
2. **It was checkable without the creator.** The crop rectangle and the dimming are wired in code
(`PreviewPane.xaml:319-322` + `DimRects`/`ApplyStreamQuality`), and the creator can see the result in
one glance. I spent the creator's scarcest resource on something one look would have settled.
Created 2026-10-17 and standing (the creator stated these explicitly, after being left unable to tell
my reasoning from my replies):
- **Every reply begins with the reply marker on its own line.** The creator will not read an unmarked
reply — reasoning and reply are indistinguishable in their UI. Do not drop it; do not rely on a
leading blank line instead (the renderer trims it).
- **One explanation and one question per reply.** No question batteries, no "three things I need"
lists, no blue-sky option menus (A-vs-B, clamp behaviour) — those read as derailing.
- **State the decision I would make, in one line, and let the creator veto** — rather than presenting a
menu of choices for them to sort out.
- **Ask the creator only what only they can decide** (product intent). Anything the code, the app, or a
single look can answer, I answer myself.