Files
redmine/PLAN.md
T
Jason Thistlethwaite 9ee9eb3ec6 Organized
2026-10-17 20:50:35 -04:00

3.7 KiB

redmine contacts + project-standardization plan

Scope: standardize this repository around the shared PROJECT.md workflow and improve redmine_contacts.py so contact review/update work can be done in controlled batches with less API/UI friction.

Target stopping point for this phase: deliver tested CLI upgrades for filtering/show/update ergonomics, plus research documentation for duplicate-contact merge feasibility.

Checklist

Contact tooling foundation

  • Apply shared project template to /home/jason/projects/redmine/PROJECT.md with redmine-specific rules.
  • Create continuity docs (PLAN.md, HANDOFF.md) for ongoing milestone handoff.
  • Add tests for new redmine_contacts.py contact-filter + tag/custom-field patch behavior.
  • Implement date/tag contact filtering utilities used by fetch and search.
  • Add show command with cache/api source control.
  • Add issue-full command that composes full Redmine issue data with helpdesk ticket/messages.
  • Add update enhancements:
    • --add-tag
    • --remove-tag
    • --set-custom-field <kebab-case-name>=<value>
  • Verify new unit tests pass and script compiles.
  • Document duplicate-contact merge feasibility (API support vs scripted browser-equivalent merge path).
  • Add config-vault project index entry for redmine workstream.
  • Decide and implement default fetch cache behavior: fetch now caches full fetched contacts by default; --cache-mode filtered opt-in stores only filtered subset.
  • Add live integration validation against LAN Redmine copy (192.168.50.170) for new commands requiring API responses.
  • Add dry-run-first batch-update command for "N contacts matching filters" workflows.
  • Add controlled ordering options for batch runs (--order including oldest-updated-first) to support systematic sweep-through campaigns.
  • Expand argparse --help output with clearer descriptions/option help across commands.
  • Add Bash completion script: /home/jason/projects/redmine/redmine_contacts_completion.sh.
  • Capture the broader contact triage loop workflow in project docs (including scoring concept + diagram).
  • Make fetch intuitive: with filters and default --cache-mode auto, cache filtered results by default (override with --cache-mode full).
  • Implement Phase 1 contact loop tracer: per-contact evidence pull (3-5 recent tickets/messages) + scoring output in dry-run mode.

Ticket-centric spam cleanup substrate

  • Plan ticket-centric sync/search/action architecture in docs/ticket_sync_tool_plan.md.
  • Implement redmine_tickets.py incremental sync using standard Redmine issue API with include=journals,helpdesk.
  • Implement per-ticket JSON cache plus state-store abstraction (ManifestTicketStateStore now, SQLite-capable seam later).
  • Implement cached search command.
  • Implement idempotent spam-check action.
  • Implement dry-run-first close-if-spam action with recent sender/contact lookback.
  • Ensure Redmine write calls can impersonate users via X-Redmine-Switch-User.
  • Default spam cleanup writes to --impersonate-user rebot (Harry Botter), while reads/dry-runs do not impersonate.
  • Verify LAN dry-run against 192.168.50.170 / customer-service: #41788 and #41789 flagged and closure-planned.
  • Document complete handoff in docs/ticket_spam_cleanup_handoff_2026-07-09.md.
  • Confirm LAN issue status_id=5 is the desired closed status.
  • Run close-if-spam --apply on LAN for the currently planned spam tickets only.
  • Re-sync/inspect LAN tickets to verify status closed, activity author rebot, and second apply is idempotent.
  • After LAN apply verification, expand cache/sync batch size beyond the first 10 tickets.