Forum teuk.org

⏰ MB678-IV-E — Give Partyline Reminders Their Own Pensieve Without Forgetting Anyone

in Mediabot · started by TeuK · 2d ago

TeuK · 2d ago

MB678 continues the progressive decomposition of Mediabot’s Partyline subsystem.

After transport, session/authentication, dispatch, plugin commands, core operator commands, scheduler/operational commands, and channel/network visibility, MB678-IV-E extracts the next coherent family: reminders and seen-history commands.

The goal remains unchanged: move responsibility without changing Partyline protocol, command syntax, privilege rules, runtime behaviour, or the historical Mediabot::Partyline method surface.


⏰ What moved

MB678-IV-E moves the following methods from:

Mediabot/Partyline.pm

into:

Mediabot/Partyline/Commands.pm

Methods moved:

_cmd_remind
_cmd_seen
_cmd_purgereminders

This family covers:

  • creating reminders;
  • querying seen information;
  • wildcard-safe seen lookups;
  • reminder cleanup/purge operations.

The Karma command family intentionally remains in Partyline.pm for a later dedicated extraction.

Mediabot::Partyline continues to expose the historical methods through imports from Mediabot::Partyline::Commands.


🧱 Structural result

Before MB678-IV-E:

Mediabot/Partyline.pm          : 2974 lines
Mediabot/Partyline/Commands.pm : 2157 lines

After MB678-IV-E:

Mediabot/Partyline.pm             : 2816 lines
Mediabot/Partyline/Commands.pm    : 2326 lines
Mediabot/Partyline/Dispatcher.pm  :  407 lines
Mediabot/Partyline/SessionAuth.pm :  676 lines
Mediabot/Partyline/Transport.pm   : 1012 lines

The parent module loses another 158 lines of mixed command responsibility.

The original pre-MB678 Partyline.pm contained:

6976 lines

It now stands at:

2816 lines

🧪 Focused validation

A new extraction contract was added:

t/cases/869_mb678_partyline_reminder_seen_commands_extraction.t

Existing source contracts were adapted where they historically assumed the implementation lived physically in Mediabot/Partyline.pm:

387_seen_wildcard_like_escape.t
629_mb411_channel_id_cached_helper.t
868_mb678_partyline_channel_commands_extraction.t

Targeted validation covered:

387
629
868
869

Result:

PASSED : 110/110

The historical method surface was explicitly checked for:

_cmd_remind
_cmd_seen
_cmd_purgereminders

Result:

3/3 resolved through Mediabot::Partyline

⚡ Fast suite

The complete fast suite passed cleanly:

PASSED : 5767/5767  (63s)

No fast regression was introduced by IV-E.


🛡️ Security audit

The security audit remained completely green:

RC_AUDIT=0
Verdict: GO — all 11 security invariants hold.

The extraction preserved all currently enforced authentication, transport, throttling, download-cap, and external-command protections.


🔌 Real runtime validation

The development service restarted successfully:

mediabot@dev : active

The Partyline listener remained available:

0.0.0.0:23456

A real TCP smoke test returned:

Mediabot Partyline
Please enter your nickname.
Enter your password.

Result:

RC_SMOKE=0

The journal contained no obvious runtime errors.


🏰 Full suite

The complete regression suite passed cleanly:

PASSED : 14701/14701  (206s)

No full-suite source-contract repair was required in this round.


🧠 Why this matters

Reminder and seen-history handling form a natural responsibility boundary.

Moving them together keeps the extraction narrow and coherent while avoiding an unnecessarily broad “community commands” migration.

The Karma command family remains separate on purpose: it has its own business logic and deserves its own validation boundary.

The Partyline architecture now has dedicated areas for:

  • transport;
  • session/authentication;
  • dispatch;
  • plugin commands;
  • core operator/session commands;
  • scheduler/operational commands;
  • channel/network visibility commands;
  • reminders and seen-history commands.

No reminder syntax changed.

No seen semantics changed.

No purge behaviour changed.

No historical method disappeared.

The Pensieve remembers exactly the same things; it simply has its own shelf now.


📦 Commit

Version : 3.4dev-20260821_072234
Commit  : eed64c3
Branch  : master

⏰ Give Partyline Reminders Their Own Pensieve Without Forgetting Anyone

Commit summary:

7 files changed
248 insertions
168 deletions

New test:

t/cases/869_mb678_partyline_reminder_seen_commands_extraction.t

The commit was successfully pushed to GitHub.


Nothing was forgotten. The memories simply moved into a better Pensieve.

You must be logged in to reply.