Skip to content

Morgeth finisher lowman fix + cascade blacklist cleanup (beta-2.2.6) - #74

Merged
owens1127 merged 1 commit into
mainfrom
fix/morgeth-finisher-bubble-backfill
Jun 30, 2026
Merged

Morgeth finisher lowman fix + cascade blacklist cleanup (beta-2.2.6)#74
owens1127 merged 1 commit into
mainfrom
fix/morgeth-finisher-bubble-backfill

Conversation

@owens1127

Copy link
Copy Markdown
Contributor

Summary

  • Morgeth Surpassing: finisher knock-off (like Crota checkpoint) allows any player count — permanently skip lowman heuristics and remove Morgeth from Pantheon2Heuristic lowman maps.
  • Bubble push-off backfill gap: clear-flags cleared flags on affected instances and reset cheat_level, but left BlacklistedPlayerCascade / standing blacklists on other instances those players touched. ClearCascadeBlacklistsForPlayers fixes this on apply.
  • Bumps CheatCheckVersion to beta-2.2.6.

Companion context: #64 (bubble skip + clear-flags), #62 (Morgeth 1–3p), #71 (post-patch re-enable).

Deploy

ssh raidhub
cd /RaidHub/Services && git pull origin main
export PATH=/usr/local/go/bin:$PATH
make hermes && sudo systemctl restart hermes
strings bin/hermes | grep beta-2.2.6

Post-merge backfill

Re-run clear-flags from #64 (now also clears beta-2.2.5 flags + cascade blacklists):

cd /RaidHub/Services
set -a && source .env && set +a
export PATH=/usr/local/go/bin:$PATH

GLITCH_DATE=2026-06-14T00:00:00Z

run_clear() {
  echo "=== dry-run bitmap=$1 ==="
  go run ./tools/clear-flags/ -dry-run -date="$GLITCH_DATE" -bitmap="$1"
  go run ./tools/clear-flags/ -date="$GLITCH_DATE" -bitmap="$1"
}

run_clear "4611686018427420672"   # DP TooFewFresh
run_clear "562949953454080"       # DP UnlikelyLowman
run_clear "562949953421440"       # Garden
run_clear "562949953421824"       # VoG
run_clear "562967133290496"       # P2 UnlikelyLowman
run_clear "2305843026393563136"   # P2 TooFewCheckpoint
run_clear "4611686035607257088"   # P2 TooFewFresh
run_clear "32768,9007199254740992,2305843009213693952"  # DP solo Koregos (#63)

Morgeth-specific SQL (any player count, all beta-2.2.x lowman bits) — dry-run COUNT(*) first:

BEGIN;

CREATE TEMP TABLE affected_instances AS
SELECT DISTINCT fi.instance_id
FROM flagging.flag_instance fi
JOIN core.instance i ON i.instance_id = fi.instance_id
JOIN definitions.activity_version av ON av.hash = i.hash
WHERE av.activity_id = 102 AND av.version_id = 133
  AND fi.cheat_check_version LIKE 'beta-2.2%'
  AND ((fi.cheat_check_bitmask & (1::bigint<<61)) != 0
    OR (fi.cheat_check_bitmask & (1::bigint<<62)) != 0
    OR (fi.cheat_check_bitmask & (1::bigint<<49)) != 0);

CREATE TEMP TABLE affected_players AS
SELECT DISTINCT membership_id FROM core.instance_player
WHERE instance_id IN (SELECT instance_id FROM affected_instances);

-- dry-run: SELECT COUNT(*) FROM affected_instances; SELECT COUNT(*) FROM affected_players;

DELETE FROM flagging.flag_instance_player WHERE instance_id IN (SELECT instance_id FROM affected_instances) AND cheat_check_version LIKE 'beta-2.2%';
DELETE FROM flagging.flag_instance WHERE instance_id IN (SELECT instance_id FROM affected_instances) AND cheat_check_version LIKE 'beta-2.2%';
DELETE FROM flagging.blacklist_instance_player WHERE instance_id IN (SELECT instance_id FROM affected_instances);
DELETE FROM flagging.blacklist_instance WHERE instance_id IN (SELECT instance_id FROM affected_instances);
DELETE FROM flagging.blacklist_instance_player WHERE membership_id IN (SELECT membership_id FROM affected_players);
DELETE FROM flagging.blacklist_instance bi
WHERE report_source = 'BlacklistedPlayerCascade'
  AND EXISTS (SELECT 1 FROM affected_players ap WHERE bi.reason = 'Blacklisted player ' || ap.membership_id::text || ' has played in this instance');
UPDATE core.player SET cheat_level = 0 WHERE membership_id IN (SELECT membership_id FROM affected_players);

SELECT (SELECT COUNT(*) FROM affected_instances) AS instances_cleared,
       (SELECT COUNT(*) FROM affected_players) AS players_reset;

COMMIT;

Test plan

  • go build ./lib/services/cheat_detection/...
  • go build ./tools/clear-flags/...
  • CI go build green
  • Deploy Hermes → strings bin/hermes | grep beta-2.2.6
  • clear-flags -dry-run each bitmap; apply + Morgeth SQL dry-run counts
  • Spot-check affected player profiles no longer grey-dotted

Made with Cursor

…anup (beta-2.2.6).

Morgeth Surpassing can be cleared with any player count via finisher knock-off; skip lowman permanently and clear cascade blacklists when running clear-flags backfill.

Co-authored-by: Cursor <cursoragent@cursor.com>
@owens1127
owens1127 merged commit 9469fcf into main Jun 30, 2026
1 of 2 checks passed
@owens1127
owens1127 deleted the fix/morgeth-finisher-bubble-backfill branch June 30, 2026 12:04
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.

1 participant