Skip to content

Fork ports, pass-2 category actions, DAI safeguards (2.90.1) - #681

Merged
ttlequals0 merged 7 commits into
mainfrom
release/2.90.0
Aug 25, 2026
Merged

Fork ports, pass-2 category actions, DAI safeguards (2.90.1)#681
ttlequals0 merged 7 commits into
mainfrom
release/2.90.0

Conversation

@ttlequals0

@ttlequals0 ttlequals0 commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Summary

Version

2.90.1

Test plan

  • Full pytest suite: 5752 passed at HEAD
  • Frontend: tsc clean, eslint clean, vitest 550 passed
  • GPU image 2.90.1 built for linux/amd64, scanned (0 HIGH/CRITICAL), pushed and verified
  • CPU image workflow dispatched for 2.90.1 (in progress)
  • Deploy webhook fired; /api/v1/health reports 2.90.1 healthy
  • CI green including CodeQL

- Clip DAI core spans on the lower-priority survivor fragment in
  split_conflicting_action_span's precedence branch, and log fully
  nested discards instead of dropping them silently
- Merge gates compare effective actions (pattern-overrides-keep) so a
  pattern-defined keep never fuses with a plain keep before the split's
  precedence can protect the plain keep's audio
- Plain confirmations (no confirmed_span) skip fragment dedup: every
  matching fragment auto-accepts as before, so no part of a confirmed
  ad loses its cut
- Boundary adjustments judge false-positive conflicts against the
  adjusted bounds with mutual 50% coverage, so a rejection extending
  past the asserted span survives
- Kept-span exclusion screens pass-2 conflicts against false-positive
  corrections before holding them for review
- cut_barriers thread through the pass-1 render and manual recut so
  kept audio is protected from cut merging and end-extension on every
  render path, not only the pass-2 recut
…parately

A boundary_adjustment correction still clamps a re-detection to its
approved bounds and auto-accepts, but no longer grants the
validation.user_confirmed reviewer bypass, so a stale adjustment cannot
pin a cut on a drifted DAI timeline. Audio a wider re-detection covers
beyond both the reviewed bounds and the approved span is split into its
own marker and validated on its own merits instead of vanishing with
the clamp.
Closes the seven open CodeQL path-injection findings on storage.py:
episode artwork reads, stale-extension cleanup, and cleanup_podcast_dir
now use _safe_join_under (resolve-and-verify) instead of raw joins. All
three sites were already guarded by input validation; this makes the
containment provable to the scanner and adds traversal regression
tests. A traversal slug at feed deletion degrades to False instead of
raising mid-delete.
README gains a short Contributing section above the disclaimer. Issue
forms for bug reports, feature requests/enhancements, and general
feedback, plus a PR template with the local test checklist. The bug
form reminds reporters to scrub keys, domains, and private feed URLs
before pasting logs.
@ttlequals0 ttlequals0 changed the title Fork ports, pass-2 category actions, DAI safeguards (2.90.0) Fork ports, pass-2 category actions, DAI safeguards (2.90.1) Aug 25, 2026
@ttlequals0
ttlequals0 merged commit 84d58e8 into main Aug 25, 2026
13 checks passed
@ttlequals0
ttlequals0 deleted the release/2.90.0 branch August 25, 2026 22:21
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