Forum teuk.org

⚖️ MB678-IV-F — Give Partyline Karma Its Own House Points Ledger Without Changing the Score

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, channel/network visibility, and reminder/seen commands, MB678-IV-F extracts the remaining Partyline Karma command family.

The objective remains conservative: move implementation responsibility without changing Partyline protocol, command syntax, privilege rules, Karma behaviour, runtime output, or the historical Mediabot::Partyline method surface.


⚖️ What moved

MB678-IV-F moves the following methods from:

Mediabot/Partyline.pm

into:

Mediabot/Partyline/Commands.pm

Methods moved:

_cmd_karma
_cmd_karmahist

These commands expose the existing Karma subsystem through Partyline.

No Karma business logic was rewritten.

No scoring rule changed.

No historical command disappeared.

Mediabot::Partyline continues to expose the same method surface through imports from Mediabot::Partyline::Commands.


🧱 Structural result

Before MB678-IV-F:

Mediabot/Partyline.pm          : 2816 lines
Mediabot/Partyline/Commands.pm : 2326 lines

After MB678-IV-F:

Mediabot/Partyline.pm             : 2675 lines
Mediabot/Partyline/Commands.pm    : 2476 lines
Mediabot/Partyline/Dispatcher.pm  :  407 lines
Mediabot/Partyline/SessionAuth.pm :  676 lines
Mediabot/Partyline/Transport.pm   : 1012 lines

The original pre-MB678 Partyline.pm contained:

6976 lines

It now stands at:

2675 lines

More than 4300 lines of mixed responsibility have now been removed from the parent module.


🧪 Focused validation

A new extraction contract was added:

t/cases/870_mb678_partyline_karma_commands_extraction.t

The previous extraction-boundary contracts were updated:

t/cases/868_mb678_partyline_channel_commands_extraction.t
t/cases/869_mb678_partyline_reminder_seen_commands_extraction.t

Targeted validation:

868
869
870

Result:

PASSED : 68/68

The historical Partyline method surface was explicitly checked for:

_cmd_karma
_cmd_karmahist

Result:

2/2 resolved through Mediabot::Partyline

⚡ Fast suite

The complete fast suite passed cleanly:

PASSED : 5787/5787  (64s)

No fast regression was introduced by IV-F.


🛡️ Security audit

The security audit remained completely green:

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

No security behaviour changed as part of the extraction.


🔌 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 produced:

Mediabot Partyline
Please enter your nickname.
Enter your password.

Result:

RC_SMOKE=0

No obvious runtime errors appeared in the journal.


🏰 Full suite

The complete regression suite passed cleanly:

PASSED : 14721/14721  (205s)

No source-contract repair was required after the full suite.


🧠 Why this matters

Karma was already a distinct subsystem.

The remaining Partyline methods were only its administrative interface.

Extracting _cmd_karma and _cmd_karmahist together therefore gives the Partyline command architecture a cleaner boundary without duplicating or rewriting Karma logic.

The current Partyline decomposition now has dedicated responsibilities for:

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

No Karma score changed.

No Karma history changed.

No Partyline syntax changed.

The House Points ledger still records exactly the same score — it simply has its own shelf.


📦 Commit

Version : 3.4dev-20260821_075138
Commit  : 595185a
Branch  : master

⚖️ Give Partyline Karma Its Own House Points Ledger Without Changing the Score

Commit summary:

6 files changed
224 insertions
151 deletions

New test:

t/cases/870_mb678_partyline_karma_commands_extraction.t

The commit was successfully pushed to GitHub.


⚖️ The House Points never moved. Only the ledger found a better room.

You must be logged in to reply.