Repository navigation
Conversation
… reported A saved frame on one video plus a capture on another could not be expressed with single-video frame access. In production the route was scoped to the new video, the saved frame was never re-inspected, and the answer said it had been. Frame access is now one entry per video, every entry must be a route subject (two videos means a comparison), and the activity report covers every video. Also: a refresh with no fixed positions runs instead of asking, required captures are analyzed before completion, app warnings survive the cap, the report is its own uncited paragraph, saved-only conflicts name frameAccess, and saved frame positions are read once per run.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Review: changes neededReviewed head
Verification: all 2,294 existing platform unit tests passed locally (67 skipped), including 141 router and 57 stored-analysis tests. Both new reviewer regression assertions fail as described. All eight Verify CI jobs for this head passed. Reviewed current description, complete changed-file diff, surrounding enforcement/finalization code and existing discussion; no prior review was duplicated. Limits: local tests use scripted model/provider responses and prove these control-flow gaps, not production incidence or live classifier quality. No production replay, merge, deployment, implementation or push performed. The original live defect is not established as fixed by this review. |
…ivity notes Folds in the per-version completion tracking, finalizer-owned activity report and resume guard from #261, and addresses the review of the previous commit: - A refresh that names positions or forbids recapture now needs a capture list; a fallback asks instead of widening it. Open refreshes no longer need one, so agent_selected is gone. - Completion tracks each frame version: one video's inspection no longer stands in for another's, and saved frames whose inventory omits the position are tried. - buildAgentTurnResult appends the activity report and states when a cited frame observation comes from an earlier turn and was not re-inspected, which holds even when the route omitted that video.
Re-review: changes neededReviewed updated head Resolved: the previous cross-video completion reproduction now passes: analyzing saved A no longer permits completion before newly retrieved B is analyzed. The original P2 remains — equivalent exact-position requests still lose their capture boundary.
Actual: accepted on the first classification attempt with Verification: all 2,300 existing platform unit tests passed locally (67 skipped). Independent original routing and cross-video-completion regressions now pass; three new equivalent-position routing assertions fail. CI was still in progress at the last check (six jobs succeeded; Platform checks was uploading its artifact and Dashboard E2E other remained running). No CI failure observed. Limits: scripted classifier/provider tests establish the acceptance and completion behavior, not how often a live model makes the routing error. No production replay or broad live-fix claim. No implementation, push, merge or deployment performed. |
- Exact-frame questions need a capture list, not only refreshes, and positions given as 'at/only N seconds' count as named positions. - A saved frame at a time the user names must appear in frameAccess; saved-only access lists are allowed and offer no capture tool. - The answer builder corrects an uncited claim of re-inspection when this turn re-inspected no saved frame, and matches earlier observations by asset version. - A failed capture closes only its own positions; other authorized captures stay required before completion.
Re-review: changes neededReviewed The prior P2 capture-boundary finding remains for two already-reported forms, at
With classifier output Expected: a bounded position list or clarification, not open-ended capture permission. Please cover these two existing regressions and make unrestricted selection depend on positive evidence that positions were delegated, rather than absence of recognized timestamp syntax. Verification: existing platform unit suite and TypeScript passed locally. Independent regression results: three passed (colon timestamp, numeric seconds, cross-video completion), two failed (above). CI remained in progress at the latest check; no failure observed. These are scripted routing/control-flow reproductions, not live production tests. No implementation, push, merge or deployment performed. |
… operations Review of 55958ea showed that wording-based checks keep leaking: - New captures are now closed unless the route lists their positions or delegates them with agent_selected, so an omitted grant can never widen a limit such as 'capture only 1:00'. Refreshes must state a grant; exact-frame questions, recapture prohibitions and named positions need a list. - The time-only saved-frame router check is removed: it lost which video a time belonged to and rejected plans that excluded a frame on purpose. - Every frame turn's answer now carries the application's account built from the requested frames, the session inventory and this run's operations: listed positions, saved frames re-inspected, or that none was. It no longer depends on the answer's wording or citations. - Earlier-turn notes judge each citation by the exact image behind it, so an untouched frame from the same batch no longer changes the note.
Re-review: changes neededReviewed P2 — The fail-closed boundary still leaves storyboard image retrieval open. Independent end-to-end control-flow reproduction:
This is not merely an offered-tool concern: the retrieval reaches the provider. A storyboard contains additional sampled images, so it can still fetch outside the user's sole authorized position even though exact-frame capture is closed. Apply the no-permission boundary to storyboard image retrieval as well, while retaining already-saved analysis and explicitly delegated open-ended visual work. Add the alternate-tool regression alongside the existing exact-frame-tool check. Verification: 2,310 existing platform unit tests passed (67 skipped); TypeScript passed. Five prior independent regressions pass, one new alternate-tool boundary test fails. Seven CI jobs passed; Dashboard E2E (other) was still running at the last check. Also reviewed the new application-owned frame notes and per-citation immutable-image matching. Limits: scripted model responses and a fake provider establish execution behavior; no live extraction or production replay. No implementation, push, merge or deployment performed. |
…ate saved images Review of 4f38472: - A frameAccess entry without videoId fixes capture times for videos discovery will choose, and agent_selected is rejected whenever the message names a position, so delegating the video no longer delegates the time. - Every saved frame at a time the user names must be listed on its own video or in setAsideFrames, so a plan that drops the saved half of a comparison is retried, and an explicit exclusion is still accepted. - An image counts as saved when the session stored it before the run started, so a capture served from session storage is a re-inspection. - Citations are placed by the inventory or by single-image packets; when neither places one, a partial re-inspection is reported as unrecorded, not as missed.
Re-review: changes neededReviewed The previous P2 storyboard bypass remains unresolved, at I reran the classifier-to-provider reproduction on this exact head: “Capture only 0:45 of https://youtu.be/abcdefghijk and describe it. Do not retrieve any other images.” A classifier response omitting the frame flags is accepted; a subsequent Verification: 2,317 existing platform unit tests passed, 67 skipped; TypeScript passed. Six independent router checks and the cross-video completion check pass. The independent storyboard boundary assertion fails. At the latest CI check, six jobs succeeded while Platform checks and Dashboard E2E (other) were still running; no CI failure observed. Limits: these are local scripted-classifier/provider tests, not a production replay or evidence of live incidence. No implementation, push, merge, or deployment performed. |
Review of 7f8cc6b found two ways the saved half of a comparison could still be skipped: - Times written as quantities ('at 30 seconds', '1m30s', '1 minute 30 seconds') now count as named times for the saved-frame check; lengths such as 'a 30 second clip' do not. - The session inventory recovers a frame's position from its resource key when older rows omitted it, so the router check and completion gate can place it. When a saved frame still goes unused, the activity note says why: the plan included none, or the frame has no recoverable position.
Re-review: changes neededReviewed The previously reported P2 storyboard permission bypass is still present at Verification: 2,319 existing platform unit tests passed (67 skipped), TypeScript passed, and seven prior independent routing/completion checks passed. The storyboard-boundary check failed. CI at last check: five jobs passed; Platform checks and both Dashboard E2E jobs remained in progress. No CI failure observed. Limits: scripted model/provider tests prove local execution behavior, not production incidence. The legacy-inventory integration test was inspected, not independently run here; Platform integration CI passed. No live replay, implementation, push, merge, or deployment. |
The capture-permission check used a narrower pattern than the saved-frame check, so 'capture only 1m30s' during discovery still accepted agent_selected. Both checks now share one parser of clock times and spoken quantities, which skips length bounds such as 'under 5 minutes'. A parity test runs every format through each check separately.
Re-review: changes neededReviewed The existing P2 storyboard bypass remains reproducible. Verification: 2,327 existing platform unit tests passed (67 skipped), TypeScript passed, and seven independent routing/completion regression checks passed. The storyboard-boundary regression failed. Six CI jobs succeeded; both Dashboard E2E jobs remained running at the last check. No CI failure observed. Limits: local scripted model/provider execution, not production incidence or a live replay. No implementation, push, merge, or deployment. |
Re-review: changes neededReviewed The existing P2 storyboard permission bypass remains unresolved at Verification: 2,332 existing platform unit tests passed (67 skipped); TypeScript passed. Seven independent routing/completion checks passed; the storyboard-boundary check failed. At the last CI check, four jobs passed and four remained in progress; no CI failure observed. Documentation changes were inspected, not independently built locally. Limits: local scripted model/provider execution, not a live production replay or incidence estimate. No implementation, push, merge, or deployment. |
Re-review: approveReviewed latest head The explicit Verification: eight independent regression checks passed; 2,336 existing platform unit tests passed (67 skipped); TypeScript passed. All eight Verify CI jobs for this exact head completed successfully: https://github.com/devhims/video2ctx/actions/runs/42457477892. Checked current head and discussion before posting; this verdict supersedes my earlier changes-needed verdict for prior heads. Limits: the independent tests use scripted classifier/provider responses. This is code-review approval, not proof of live router quality or a production fix. A scoped post-deployment replay is still needed for the original cross-video re-inspection scenario, including retained-frame provenance, visible activity reporting, and actual image-retrieval behavior. No implementation, push, merge, or deployment performed. |
Re-review: changes neededReviewed
Verification: 2,347 existing platform unit tests passed (67 skipped), TypeScript passed, and the eight prior independent checks passed. New full-classifier assertions fail for both findings; parser-level checks corroborate them. Seven CI jobs passed at the last check; Dashboard E2E (other) was still running. No CI failure observed. Limits: scripted local classifier/parser tests, not a live production replay or incidence claim. No implementation, push, merge, or deployment. My prior approval applied to |
Re-review: approveReviewed latest head
Earlier omission, storyboard permission, discovery scope and cross-video completion regressions remain passing. No remaining material finding identified in this review. Verification: all 15 independent regression assertions passed; 2,356 existing platform unit tests passed (67 skipped); TypeScript passed. All eight Verify CI jobs completed successfully for this exact head: https://github.com/devhims/video2ctx/actions/runs/42462757219. Current head and existing discussion checked before posting. This approval supersedes the changes-needed verdict on Limits: local tests use scripted classifier/provider behavior. Approval is not a claim that every natural-language formulation is handled, or that the original production behavior is fixed. A scoped post-deployment replay remains needed for saved/new cross-video inspection, actual capture boundaries, citations and application-owned activity notes. No implementation, push, merge, or deployment performed. |
Re-review: changes neededReviewed P2 — Compound hour/minute positions are split into two different capture grants. Independent checks show both consequences: the correct 90-minute grant is rejected by This is a newly identified remaining defect in the PR's parser, not a regression introduced specifically by this latest commit; it also exists in earlier PR heads. My earlier approval did not cover this formulation. Verification: 2,371 existing platform unit tests passed (67 skipped), TypeScript passed. Sixteen independent assertions passed, including the previous regressions and storyboard pairing; two new assertions fail for the compound-time defect (parser and full classifier). Seven CI jobs passed; Dashboard E2E (other) remained running at the last check. No CI failure observed. Limits: local scripted classifier/parser tests, not a live provider request or production incidence claim. No implementation, push, merge, or deployment. |
Problem / Motivation
A user can ask the Agent to re-inspect a saved 0:30 frame and capture only 1:00. Previously, the Agent could request 0:30 again and say it had reused the saved image. A provider request alone cannot establish whether the backend fetched new bytes.
What changed
The router checks each proposed operation against the user's timestamps and videos. Classification retries and resumed turns use the same permission checks. A failed saved inspection leaves a gap and the authorized capture can continue. The answer reports the operations recorded during the turn.
When an answer requires images, the router retries a plan that omits image access. A storyboard comparison keeps the permitted times on each video. The tool checks each selection before evidence lookup or billing. Answers identify earlier frame observations from their citations, including on history-only turns.
%%{init: {"themeVariables":{"signalColor":"#64748b","sequenceNumberColor":"#ffffff"}}}%% sequenceDiagram autonumber participant A as Agent participant S as Saved images participant P as Image provider A->>S: Inspect saved 0:30 S-->>A: Image unavailable alt Before A->>P: Request 0:30 again else With this change A->>P: Request only 1:00 A-->>A: Record the 0:30 gap and 1:00 result endThe example shows the provider requests after saved inspection fails.
Tests
Provider-level regressions cover extra timestamps, prohibited recapture, cross-video assignments, and targeted storyboard sheets. The platform unit suite passed 2,371 tests with 67 skipped. The runtime integration suite passed 521 tests. TypeScript and generated documentation checks passed.
Compatibility
Existing single-video frame plans remain readable. Rolling back requires draining in-flight runs that use the newer permission shapes. A live production replay remains pending.