Repository navigation
Conversation
…ort inspected frames
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
devhims
left a comment
There was a problem hiding this comment.
Verdict: changes needed
Reviewed head ef33ddf82a5f749b54d7f90518103ab4ae541452.
The prior #262 compound-time finding is fixed in the tested scope: 1 hour 30 minutes, 1h30m, 1:30:00, and 90 minutes accept only the 90-minute capture and reject the split 60-/30-minute grants. Two residual P2 issues remain:
P2 — Consume fractional clock timestamps completely
platform/src/agents/research/timestamp-expression.ts:19,28-30
For Capture only at 0:30.500 of https://youtu.be/abcdefghijk., readFrameRequest returns a nonambiguous capture at 30000 ms. The validator therefore accepts that wrong grant rather than preserving 30500 ms or asking for clarification. The same happens with 00:30.5; a persisted 30000-ms route is also accepted by resolveCapabilityRoute. Decimal quantity 30.5 seconds correctly uses 30500 ms, so equivalent user notation changes the permitted frame. A fast-moving scene can therefore be inspected at the wrong instant despite an exact-only request. Extend the clock expression to consume the full precision, or reject the unsupported complete expression rather than authorizing its prefix. Add classifier and resume regressions.
P2 — A targeted storyboard refresh can finish using only the old sheet
platform/src/agents/research/research-agent.ts:824-828 (and the frame-only freshness guard in providers/youtube/tools/stored-analysis.ts:45)
Reproduction: save a storyboard sheet covering 0:00, then ask Refresh the storyboard sheet at 0:00 of https://youtu.be/abcdefghijk and describe it. The actual classifier produces refreshFramesOnly:true with {storyboardTimestampsMs:[0]}. In an independent scripted-model run, calling analyze_video_storyboard on that old saved version and then complete_research succeeds with zero storyboard-provider calls and zero completion refusals. The current-turn analysis range alone makes needsVisualWork return false before checking retrieval, so a requested refresh can be silently satisfied with stale pixels. Require the fresh sheet retrieval/version lineage before old-sheet analysis can satisfy a refresh. Preserve ordinary saved-sheet reuse when no refresh was requested.
Verification
- Committed platform suite: 2,383 passed, 67 skipped.
- TypeScript
tsc --noEmit, generated Agent skills, and generated docs checks passed after installing the checkout's dependencies. - Independent timestamp checks: 5 passed, 3 failed (two fractional-clock cases plus persisted-route guard).
- Independent storyboard-refresh checks: 2 failed, including classifier-to-research-loop reproduction above.
- GitHub Verify run 42595419825 passed for this head.
- No production replay or live model/provider validation was performed. Scripted-provider results establish code paths, not live-platform reliability. No product code was changed, pushed, merged or deployed.
Recorded as COMMENT because the connected account is the PR author; the review verdict remains changes needed.
devhims
left a comment
There was a problem hiding this comment.
Verdict: changes needed
Re-reviewed a04f652faca5a41737a100df61ec70ce29d0d025, including the delta from my previous reviewed head and both previous P2 findings.
P2 remains: targeted storyboard refresh can finish with stale saved pixels
platform/src/agents/research/research-agent.ts:824-828 and platform/src/agents/providers/youtube/tools/stored-analysis.ts:45-46.
I updated the independent reproduction to the new classifier-native scope: {storyboardSelections:[{videoId:"abcdefghijk",timestampsMs:[0]}]}. For “Refresh the storyboard sheet at 0:00 of https://youtu.be/abcdefghijk and describe it,” the actual classification wrapper accepts refreshFramesOnly:true; a scripted research model then analyzes the old saved sheet and completes with zero storyboard-provider calls and zero completion refusals. Both independent protection assertions still fail. refreshFramesOnly freshness enforcement still excludes storyboard assets, and the completion check returns early for an analysis covering the requested position without requiring fresh retrieval/version lineage. The user can therefore get stale images despite explicitly requesting a refresh. Require current-run retrieval before old-sheet analysis can satisfy a refresh, while retaining ordinary saved-sheet reuse when refresh was not requested.
Previous fractional-clock issue: faulty parser removed, interpretation now model-dependent
The prefix-truncating timestamp parser is gone. Three independent scripted-classifier checks confirm that 30500 ms survives classification and resume for 0:30.500, 00:30.5, and 30.5 seconds. These checks supply the correct classifier output: they establish precision preservation, not live-model interpretation accuracy. The new design trusts the model's structured scope rather than independently validating it against the prompt. I did not perform a live-model replay or claim broad timestamp reliability.
Verification
- Committed platform suite: 2,338 passed; 67 skipped (142 test files passed, 9 skipped).
- Clean-checkout TypeScript, generated Agent skills and generated docs checks passed.
- Independent fractional precision/resume checks: 3 passed.
- Independent storyboard-refresh protection checks: 2 failed, as described above.
- GitHub Verify run 42601214089 was still in progress at my last check.
- No live production/provider tests; the author's live-replay and integration results are not independently reproduced here. No product code changed, pushed, merged or deployed.
Recorded as COMMENT because the connected account is the author; the explicit verdict remains changes needed.
Problem / Motivation
A user asked the Agent to reuse a saved 3:30 frame and capture only 3:48. When saved analysis failed, the Agent requested 3:30 again. The trace showed a retrieval request; it did not establish whether new bytes were fetched. This PR supersedes #262.
What changed
The Agent interprets each frame request once. The visual inspection skill guides recovery when a saved read fails. Exact-frame and storyboard tools enforce the resulting limits before lookup or billing. Resuming a run preserves its scope. The answer reports what was retrieved and inspected from the run records.
%%{init: {"themeVariables":{"signalColor":"#475569","sequenceNumberColor":"#ffffff"}}}%% sequenceDiagram autonumber participant A as Agent participant T as Image tools A->>T: Inspect saved 3:30 T-->>A: Saved analysis failed A->>T: Request only 3:48 T-->>A: 3:48 returned and inspectedA failed saved read no longer gives the Agent a path to fetch that position.
Tests
Before pushing, a live Fireworks replay with synthetic image results recorded one image request: 3:48. The Agent reported the 3:30 gap and declined the unsupported comparison. A scripted replay also attempted a forbidden batch and storyboard; neither reached the provider.
2,338 platform unit tests, 521 runtime integration tests, and 171 auth integration tests passed. TypeScript and generated-file checks passed. Run
npm run test:agent:weather-replayinplatformwithAGENT_REPLAY_ENV_FILEpointing to the local model credentials. This tests interpretation and recovery, not production image extraction.