Repository navigation
feat: guide visual inspection and keep answers focused - #213
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Independent review — 289c9b2Verdict: CHANGES NEEDED. Reviewed against stacked base e1139b1. Independent local probes reproduce four groups of gaps despite the passing standard suite. P2 — Unsupported inspection claims bypass the checker when records are absentresearch-agent.ts:1141–1149, with the same predicate in Both gates require existing visual coverage or inspection items. A mocked context-answer draft saying “I inspected frames at 3:20.” with no visual records reaches the finalize/persistence callback without selecting the review model. Absence of records is exactly when this positive inspection claim is unsupported; it should not exempt the claim from checking. Please make inspection-claim checking cover this case, while preserving legitimate hypothetical/uncertain answers. Add an end-to-end runtime regression for the no-record path. Verification scope: real finalizer control flow with mocked models and persistence callback; no production DB write or live-model behavior was tested. P2 — The checker receives less supporting context than the answer generatorvisual-evidence-review.ts:38–39 and research-agent.ts:1136–1138. Two prompt-capture probes confirm:
Please pass the relevant cited transcript findings and already-prepared history/context to the checker with matching identities and explicit omission limits. Otherwise supported answers may be rejected or rewritten because their evidence was withheld from the reviewer. The deterministic input omissions are reproduced; actual live-model false rejection is a risk, not a claimed live reproduction. P2 — Valid quote-only context/question memory updates are silently rejectedmemory-updater.ts:137–148; new schema contract at lines 33–37. The schema accepts a context upsert with a valid Please require P2 — Reviewer forgets the run's already-selected fallback modelresearch-agent.ts:234 and line 385 create the evidence reviewer without the run's Three additional mock/fake-timer tests confirm the mechanism: constructor capture shows Verification
Scope and limitsKiro also reviewed this head source-only and did not approve; no Kiro test counts are included above. The checker intentionally fails closed and adds a model call; those design choices alone are not classified as defects here. No fresh live provider/model/dashboard testing or production rollout verification. The author's live replay is reported evidence, not independently reproduced. Existing memory is intentionally not backfilled, and pending v1 updater jobs are skipped as documented. This remains stacked on PR211; after that lands, retarget to main and verify the actual resulting base/head. No implementation, push, merge or deployment performed. |
Re-review — 696e307Verdict: APPROVE for this exact head against stacked base e1139b1. All four previously reproduced P2 groups are resolved in independent regression checks. No new material code defect was established. This is scoped code approval, not production rollout verification. Prior findings retested
Fresh independent validation
Kiro review and remaining limitsKiro's source-only review agrees that all four settled P2s are fixed. After clarification, it revised its earlier latency/cost hold to approve with rollout verification; it has not observed the twenty-second checker cap being exceeded. We agree this is an explicit rollout-verification limit rather than an established code blocker: this revision documents that every substantive answer gets a bounded, fail-closed model check using the same prepared context. Largest-context live latency and incremental production cost have not been independently measured, and this approval does not promise they are acceptable under all workloads. Kiro ran no tests; the counts above are independent local results. No fresh live provider/model/dashboard tests or production rollout verification. Mock tests establish control flow, input preservation and fallback behavior, not semantic reliability of the reviewer. Existing memory is not backfilled as documented. This PR remains stacked on #211. Merge #211 first, then retarget to main and verify the actual base/head and checks. No merge or deployment performed. |
Revised review — 0358914 (October 19, 2026)Verdict: CHANGES NEEDED. Earlier approval for this head is withdrawn. Follow-up production-helper probes reproduce three material issues in the new inspection-record path, against stacked base e1139b1. P2 — Sibling-branch inspection reasons enter the finalizer without provenance
Scope is same authenticated user/session, sibling branches, not demonstrated cross-account leakage. Existing ancestor resolution is branch-scoped; this new path bypasses it. The identical base fixture made no structural read and received no sibling canary. Prompt contamination is reproduced, not a particular live model answer. Scope records to the relevant lineage or supply explicit provenance and enforce its use. P2 — Every answer parses all stored evidence before filtering
Both clarification and rejected production-helper fixtures with zero video subjects parsed five full-transcript packets totaling 2,869,750 serialized bytes, then emitted zero inspection records. Base fixtures performed zero structural reads. Session growth, including PR211's redundant saved comment snapshots, increases CPU/heap/SQL work for even simple replies. No production OOM or latency figure was measured. Skip unnecessary paths and retrieve bounded relevant structural metadata without decoding all source payloads. P2 — Source-bearing selection reasons bypass evidence admission
With the actual RunEvidenceLedger at its exhausted 22-credit reserve, a frame-analysis packet is withheld and the finalizer evidence array is empty, yet its free-text reason still arrives through the structural history projection. This path exists even without the session-wide method. Ordinary excerpts remain excluded: this is bounded source-bearing free text, not all transcript/image content. Do not assume agent-written explanations are source-free metadata. Enforce an explicit admission/provenance boundary for reasons while keeping truly structural times/counts separate. Nonblocking corrections and feedback triage
Verification and limitsSix targeted production-helper tests passed, plus three identical finalizer fixtures on head and three on base. Existing memory/router suites: 138 passed. An additional quote/gate helper probe reproduced the fidelity issue and confirmed ordinary legacy gate alignment. Production projection, finalization, frame validation, ancestor and billing helpers ran with fixture model/provider/storage inputs. No live provider/model call, production performance measurement, implementation, push or full-suite rerun. Earlier test totals below are historical, not evidence against these new findings. PR211's newly found search defects are tracked separately; this remains a stacked PR pending correct retarget/review. Historical validation record (revised verdict above supersedes approval)Re-review — 0358914Verdict: APPROVE for this exact head against stacked base e1139b1. Independent review and Kiro's source review agree: the intentional checker removal is complete and the retained workflow/history/memory changes are coherent. No material blocker found. Verified behavior
Independent validation
Nonblocking cleanup / limits
PR211 must land first, then retarget this stacked PR to main and verify the actual resulting base/head and checks. This review does not merge or deploy either PR. |
…e visual skill with its tools Inspection records now come only from the current turn and the frame and storyboard packets each earlier turn on the branch produced or received. Other conversations sharing the session no longer contribute selection reasons, and the full session scan is gone. Records are bounded once over a deduplicated list, so omitted records are counted once. The visual-inspection skill is included exactly when the model has visual tools, and it restates the storyboard-failure fallback and the finish checks that left the capability prompts. Context and question memories store the matching words from the user's question rather than the model's copy. Conversation history sent to models no longer carries unused message IDs. The finalizer comment about repairs is restored and its single-use payload variable is inlined. The live replay passes each turn's inspection packets the way the runtime does.
|
Verdict: CHANGES NEEDED for 3f7c3a2 against stacked base 9ba6ba8. The branch-scoping and session-wide scan fixes are improvements, but the earlier source-bearing selection-reason admission finding remains unresolved. P2 — Historical selection reasons still bypass the current turn's evidence admission. A current-head production-finalizer probe used the real RunEvidenceLedger with its 22-credit reserve exhausted. The historical analysis packet was withheld, finalizer evidence was [], receipts were [], and its ordinary visual observation was absent. Nevertheless a synthetic transcript-derived numerical claim appeared verbatim in inspectionRecords.items[0].frameCoverage.selections[0].reason. The claim was absent from both the earlier user and assistant messages, so this was not ordinary conversation-text reuse. A history-only route reproduced the same path without calling evidence admission at all. The real executeGetVideoFrames validator accepts that reason with a valid locating excerpt ID. Impact: bounded source-bearing text reaches the answer model through supposedly structural context despite the underlying source packet being withheld. This is not a cross-account leak, a demonstrated live answer, or a measured billing overcharge. Preserve free structural timestamps/counts, but enforce an explicit admission/provenance boundary for source-bearing reason text. Do not regard the previous P2 as resolved merely because the storage lookup is now branch-scoped. Prior fixes checked:
Independent verification:
Dependency/readiness: this remains stacked on PR211 at 9ba6ba8, whose unrelated-deletion search omission is separately unresolved and whose integration with current main has conflicts. The PR description still names older base e1139b1; update it to the actual stack and re-review the eventual main-based tree. No fresh live provider/model/dashboard testing. Kiro sign-in remains unresolved, so no new Kiro agreement is claimed. Only local test probes were added; no production implementation, push, merge or deployment performed. |
…pection-workflow Brings in main through the updated base. Conflicts: main added analysis while retrieving and rewrote the visual paragraphs of both capability prompts, which this branch had moved into the visual-inspection skill. The paragraphs stay in the skill, which now asks for an analysis question on get_video_frames and get_video_storyboard and explains RETRIEVAL_ANALYSIS_FAILED. The inspect_video transcript paragraph keeps main's analysis option and this branch's speech-only rule. get_video_frames accepts both analysis and selections, and saved-frame analysis records selections on main's shared packet.
… reasons A free-text reason could restate transcript or image content, and inspection records carried it to later answers without evidence admission. get_video_frames now takes one basis per timestamp (publisher_timestamp, spoken_introduction, caption_mention, storyboard_overview, label_check, nearby_retry, user_requested or exploratory) with the locating excerpt IDs it rests on. Every basis except user_requested and exploratory must cite delivered excerpts, and those two cite none. Categories carry no source content, so follow-ups can still explain why a frame was chosen from structural records, while what a cited excerpt says reaches the answer only through admitted evidence. Free-text reasons saved before this change are dropped when read and explain as reason unknown.
Independent re-review — 19194a2Verdict: APPROVE this exact head against stacked base Prior admission finding resolved
P3 — Combined analysis has contradictory operation labels (nonblocking)
An independent probe reproduces the inconsistent fields, not a live model misstatement, missing analysis or billing error. Correct analysis proof remains present in the other fields, so this is a consistency cleanup rather than a merge-blocking defect. Independent verification
Limits and dependencyNo fresh live model/provider/dashboard, production-performance, local browser E2E, web-build or Docker-build verification. The author's historical replay was not independently rerun; structural tests do not guarantee correct image interpretation or answer style. Skipped tests remain unverified. Kiro sign-in is unresolved, so writer/reviewer alignment for this head is not claimed. Keep the stacked dependency and eventual main-based recheck explicit. No implementation, push, merge, deployment or repository settings change performed. |
Problem / Motivation
Visual questions lacked a consistent inspection workflow. Follow-up answers could confuse retrieved images with reported finding times or invent reasons for selecting frames. Ordinary answers could also include unnecessary narration about transcript reads and other tool use.
This PR depends on PR #211. Its base branch mirrors that PR's branch, currently at
48c27b8, which includes currentmain. Merge #211 first, then retarget this PR tomain.What changed
The visual-inspection skill guides locating subjects, using storyboard overviews, checking exact frames and reusing saved analysis. Frame requests record one basis category per timestamp, such as a spoken introduction or a storyboard overview, with the locating references it rests on. Free-text reasons are not accepted, so recorded selections carry no source content.
Structural records distinguish images supplied to analysts from timestamps mentioned in findings. Explicit workflow follow-ups use these records and identify unknown selection reasons. Ordinary answers present findings, citations and material uncertainty without unsolicited tool narration.
The separate semantic checker is removed entirely. Answers use existing schema and citation validation without a reviewer model call or duplicated reviewer prompt. Valid quote-only context and question memories are accepted without generated text.
The retained answer path uses the new inspection context:
%%{init: {'theme': 'base', 'themeVariables': {'actorBkg': '#e8eef6', 'actorTextColor': '#172b4d', 'actorBorder': '#52657a', 'signalColor': '#52657a', 'signalTextColor': '#52657a', 'labelBoxBkgColor': '#172b4d', 'labelTextColor': '#ffffff', 'sequenceNumberColor': '#ffffff'}}}%% sequenceDiagram autonumber participant R as Research agent participant F as Finalizer (retained) participant S as Storage (retained) R->>F: Supply analyzed evidence and recorded inspection context F->>S: Save after structure and citation validation S->>S: Update quoted user memory separatelyTests
Platform build passed. Repository tests: 2,599 passed, 58 skipped. Separate auth integration: 170 passed. Regressions verify single-call finalization and retained history and memory behavior.
Live Fireworks replay passed all four original questions, with direct initial prose, working workflow follow-ups and no inspection reviewer calls. Replay used saved public assets and local SQLite.
Production rollout remains pending. Image interpretation and answer style depend on model behavior. Existing memory is not backfilled. Workflow and replay notes.