Skip to content

fix(video): protect retained raw transcript fields - #16128

Merged
diegosouzapw merged 1 commit into
release/v3.8.52from
fix/12430-raw-video-retention-1010
Oct 10, 2026
Merged

diegosouzapw merged 1 commit into
release/v3.8.52from
fix/12430-raw-video-retention-1010

Conversation

@diegosouzapw

Copy link
Copy Markdown
Owner

Raw video transcript/audioTranscript fields could remain in persisted request details and disk artifacts when video description failed or maxVideos left a sibling video unchanged. Mark these requests as observed even with zero replacements; after matching rendered-description shadows, apply the existing structural redactor to raw siblings on the retained copy. Preserve the provider payload and ordinary non-video retention.

Defined empty strings and null intentionally activate the same conservative retention/cache/Memory policy; absent fields and non-video metadata do not. Document this bounded contract in GUARDRAILS and its 66 translations. The source entry was fully synchronized on the base, so only its 199 source/target/timestamp fields are updated; all other entries and text outside the inserted paragraphs are preserved.

Refs #12430 (item 5, unreplaced raw-video residual). This is a partial delivery. The tracker remains open for its broader end-to-end acceptance; related STT/provenance work in #15780/#16061 is unchanged.

Validation:

  • Two separate TDD reproductions through the real Chat Completions HTTP route and temporary SQLite: failed description with unknown native video capability, and one successful shadow plus an over-limit raw sibling. Each RED→GREEN pair keeps its fixture hash. The final fixture passes 6/6 (five subcases plus parent), including empty/null fields and ordinary-retention controls. It asserts the live upstream video parts remain structurally identical while retained detail/artifacts omit sensitive content; pending state is a preserved control, not an additional reproduced leak.
  • Related selection: 21 files, 276 tests, 263 pass and 13 fail exclusively in the legacy HTTP fixture blocked by its host-without-port MockAgent allowlist. Its exact file hash matches the independent base RED for fix(tests): allow the exact retention fixture host through MockAgent #16122, which owns that fixture correction. No assertions or fixture from that PR were changed here. The final six-case rerun covers the later characterization addition; the selection is not described as entirely green.
  • Core/dashboard typechecks, canonical focused ESLint/Prettier, file-size, both complexity gates, test discovery, changelog integrity and docs-all pass. The separate i18n drift output is byte-for-byte equal to the base result (24 source, 132 target, 132 stale, zero missing); no new drift.
  • Independent SPEC and Standards review. The last follow-up changes only a comment explaining the extra structural clone. The 66 translations have technical/parity validation, not native-speaker review in every language.

The HTTP adapter runs real route/guardrail/logging code with synthetic description/inference and isolated DB/plugins, blocking external sockets. It does not exercise ffmpeg/STT, a real provider account, a full Next server, or every external store/plugin sink. No merge or deployment is performed here.

@github-actions

Copy link
Copy Markdown
Contributor

CI Coverage Report

  • Coverage job: skipped
  • PR test policy: success

Coverage artifact was not available for this run.

@diegosouzapw
diegosouzapw merged commit f7bd1e8 into release/v3.8.52 Oct 10, 2026
25 of 51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant