Skip to content

Add tag-only handoff mode with deferred ARR follow-up#336

Open
tomerh2001 wants to merge 6 commits intoManiMatter:devfrom
tomerh2001:feature/tag-only-handoff-deferred-arr-followup
Open

Add tag-only handoff mode with deferred ARR follow-up#336
tomerh2001 wants to merge 6 commits intoManiMatter:devfrom
tomerh2001:feature/tag-only-handoff-deferred-arr-followup

Conversation

@tomerh2001
Copy link
Copy Markdown

Summary

Implements a configurable tag-only handoff workflow so Decluttarr can defer cleanup ownership to an external service (for example qbit_manage), while optionally triggering ARR follow-up only after external removal is detected.

What Changed

  • Added new ARR-removal job controls:
    • action_mode: remove | skip | tag_only
    • handoff_tag
    • deferred_arr_followup
    • followup_trigger (currently on_download_removed)
  • Extended JobDefaults and job-level parsing for the above fields.
  • Added env parsing support for job-default keys (ACTION_MODE, HANDOFF_TAG, DEFERRED_ARR_FOLLOWUP, FOLLOWUP_TRIGGER).
  • Implemented tag_only path in RemovalHandler:
    • Apply handoff tag to matching torrent.
    • If deferred_arr_followup: true, detect whether the download hash is gone from qBittorrent.
    • Trigger ARR queue removal/blocklist follow-up once external removal is detected.
  • Added config/docs updates in config/config_example.yaml and README.md.

Tests

  • Added new tests for:
    • tag-only handoff waiting behavior
    • deferred follow-up trigger after external removal
    • safe skip when tag handoff is unsupported
    • job defaults + job-level override parsing for new fields
    • env-loading for new job-default keys
  • Full suite run locally:
    • python3 -m pytest -q

Related

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.

Feature: tag-only handoff mode with deferred ARR follow-up (single cleanup owner)

1 participant