Commit: 0533ef1
Version: 3.4dev-20260818_010348
MB658 adds a small bit of mystery to Mediabotβs Achievement system.
Some milestones are now deliberately hidden until they are actually earned. Their names, requirements, thresholds and progress do not appear in the normal public Achievement views while they are locked.
Once unlocked, the secret is revealed like any other achievement.
MB658 introduces three hidden milestones:
π The Witching Hour β 5,000 night messages
π₯ Eternal Flame β 365 consecutive active days
πͺΆ Phoenix Rising β return after 365 days away
They reuse counters that already existed:
night_messages
activity_streak_days
comeback_days
So MB658 does not add a new historical scan or new persistence model.
A locked secret is excluded from the normal public surfaces:
!achievements list
!achievements progress
next-goal calculations
!profil completion denominator
That last point matters. If !profil counted invisible achievements in its denominator, users could infer that hidden milestones existed.
MB658 removes locked secrets from that denominator as well.
Once the user earns a hidden achievement, it stops behaving like an invisible catalogue entry.
The unlocked achievement can then be shown normally with its real:
name
description
icon
threshold
progress
The secret exists to preserve discovery, not to make earned achievements disappear forever.
The three secrets sit on progression counters that Mediabot already maintains:
MB655 β activity_streak_days
MB656 β comeback_days
MB657 β night_messages
That means MB658 mainly changes catalogue and presentation semantics.
No new aggregation path is required.
The structural guard confirmed these query-site counts:
Mediabot/Achievements.pm
SELECT = 26
prepare() = 31
Mediabot/UserCommands.pm
SELECT = 139
prepare() = 126
MB658 adds:
0 new SELECT sites
0 new prepare() sites
So the feature does not increase database query pressure.
The corrected MB658 source guard confirmed:
Hidden achievements : eternal_flame, phoenix_rising, witching_hour
Catalogue entries : 35
OK: exactly three secret legendary achievements
OK: locked secrets stay out of public goal/progress views
OK: !profil denominator cannot leak locked secrets
OK: secrets reuse existing progress counters
OK: MB658 adds zero SELECT/prepare query sites
MB658_SOURCE_GUARD=OK
RC=0
An earlier diagnostic regex was discarded after it proved too greedy and matched unrelated catalogue entries. The implementation itself was fine; the guard was corrected to parse actual top-level Achievement blocks.
The focused Achievement/profile regression passed:
PASSED : 710/710
RC=0
Coverage included public dispatch integrity, Achievement persistence, async processing, profile/career behaviour, progress persistence, threshold overrides, durable identity, streaks, comebacks, Night Owl progression, secret achievements and module structure sanity.
The entire Mediabot test suite passed:
PASSED : 13570/13570
RC=0
Runtime:
870s
MB658 introduces:
no database schema change
no migration
no configuration change
no service change
no systemd change
no new historical scan
Committed scope:
CHANGELOG.md
VERSION
Mediabot/Achievements.pm
Mediabot/UserCommands.pm
t/cases/794_mb611_achievement_thresholds.t
t/cases/795_mb612_achievement_progress_view.t
t/cases/840_mb658_secret_achievements.t
0533ef1
ποΈ Hide Legendary Achievements Until They Are Earned
Version:
3.4dev-20260818_010348
Mediabot already knew how to measure the milestones.
MB658 simply learned that some magic is better when nobody tells you where to look.
You must be logged in to reply.