Skip to content

ZG: faster Hakkar attempts (one-round clear for dead packs, Hakkar leg without the double-back) - #443

Draft
pjerra wants to merge 4 commits into
devfrom
fix/zg-hakkar-fast-attempt
Draft

pjerra wants to merge 4 commits into
devfrom
fix/zg-hakkar-fast-attempt

Conversation

@pjerra

@pjerra pjerra commented Nov 11, 2026

Copy link
Copy Markdown
Owner

Faster Hakkar attempts in Zul'Gurub raid walks: a quicker GM pre-clear and a Hakkar leg that no longer doubles back.

What changes

  • raid-walk --gm-clear (cmd/turtle-agent/raid_walk_gmclear.go): a pack whose first round found every member dead (or given up) skips its second round. The instance is still read after every .go xyz and before any unit read or kill. A stop that lands in another instance copy stops the clear with no kill.
  • dungeons/zul_gurub.json, leg hakkar: the leg's to is the placement row the placed walk already starts on (-11786.999 -1564.2667 20.563), and the second via is dropped. Leg 7's end → first pull goes from 239.3 yd to 149.8 yd; the export goes from 694 to 691 rows. The origins pin is updated. The matching TortoiseBots migration is 20261111100000_world.sql (--rev 9a9ac8f0); its rows match this pin.

Why

In walk 71, an attempt spent a median 322 s from the gear line to placement, 260 s of it in the clear: every pack was visited twice, with a 2 s pause per stop. A raid entering the Hakkar leg also walked north-east and back. The measurements are in the walk 71 timeline analysis.

Tests

  • A dead pack gets one round.
  • A round 1 that misses a member still runs round 2 and kills it.
  • A second stop in another instance stops the clear before any read or kill.
  • A failed final instance check sends no kill.
  • The origins pin.
  • vm-test ta: PASS on c7abe68; gofmt is clean.

Reviews

  • Codex adversarial: one HIGH (the per-stop instance check), fixed in 76e2faa; then approved.
  • Opus cold review: minor items, fixed in c7abe68.

Status

Draft until walk 72 shows the faster setup live (gear → place seconds, place → pull seconds, Hakkar fights per hour). The walk binary is ~/ta-1111a-bin (c7abe68).

The leg's `to` was the walk-29 quiet point north-east of the temple and its
second via walked the party back to it before the approach path turned south:
a run starting at the leg's first row doubled back (leg 7 end -> pull 239.3
yd; the JSON chain placement -> via -> to -> boss approach -> boss 371.1 yd).
`to` is the row a placed Hakkar run already starts on (-11786.999 -1564.2667
20.562721) and the first via keeps the connection from leg 7's end: leg 7 end
-> pull 149.8 yd, chain 290.1 yd. The pull groups and the boss step are
unchanged.
…ck's second round

Walk 71 paid 115 `q inst` reads and 114 `.go xyz` + 2 s sleeps for 52 packs:
every pack was walked twice, and the second round read the same dead units
(the four one-member packs of a formation group each got their own pair of
visits). The instance is now read once per pack (the end of the clear still
reads it once more), and the second round - and the rest of a round's stops -
is skipped once every member is dead or has had its four kill lines. A member
never seen or seen alive still gets the second round, and a member is skipped
exactly as before, so the killed set is unchanged. ~120 s of the 322 s
gear-to-place median goes.

Tests: TestPlaceGMClearSkipsTheSecondRoundOfADeadPack (fails at 2 clear reads
before the change; disabling the skip reproduces it), and the wide-pack test
now pins a wholly empty first round still reading round 2 and exactly 2
`q inst` in the clear. docs/okf/raids/place-mid-raid.md says the new rule.
The once-per-pack read of 9a9ac8f skipped placeInstanceIs after a pack's
first stop, so a later stop landing in another copy still read units and
sent irreversible GM kills there. The check is back after every .go xyz
and before every units read or kill: a mismatch stops the clear on the
existing error path with no kill sent.

Only the dead-pack second-round skip of 9a9ac8f stays: a pack whose
every member is dead (or used its four kill lines) after the first round
is not walked again. Walk 71's ~230 s of the 322 s pre-clear for those
empty second rounds still goes; the per-stop instance reads are back.

Tests: TestPlaceGMClearSecondStopInstanceMismatchStopsTheClear (a second
stop in another copy: no second-stop read or kill, the clear stops; drop
the per-stop check and it fails at the post-move read), kept
TestPlaceGMClearSkipsTheSecondRoundOfADeadPack, and the wide-pack test
now pins one instance read per stop plus the final check.
docs/okf/raids/place-mid-raid.md says the restored rule.
origins_test.go: the walk-71-fast pin comment counts export rows the way
the older entries do (export 694 -> 691 rows), and names the moved to
(old -11754.643 -1494.6427 37.765 -> new -11786.999 -1564.2667 20.563)
and the dropped via (-11776.531 -1502.4786 29.246). Comment only: the pin
value 62b90de7 stays, and the TortoiseBots export (migration
20261111100000, --rev 9a9ac8f, 691 steps) still matches it.

dungeons/zul_gurub.json: the walk-71 note gains the plan-check line for
the new via->to hop (plan-check --dir dungeons --mmaps ~/turtle-agent-mmaps
zul_gurub with a VM-built binary: ok, 851 points, 0 issues; export steps
400 -> 401, 55.2 yd, no finding) and the patrol-loop margin (the new to is
55.5 yd from the nearest patrol loop, 11357 Son of Hakkar guid 49033).
Notes are not exported: the pin still passes unchanged. Rows untouched.

Tests: TestPlaceGMClearSecondRoundKillsAMemberMissedInRoundOne (round 1
misses the far member, round 2 kills it; removing the second round fails
at partial true) and TestPlaceGMClearFinalInstanceCheckFailureSendsNoKill
(the final check names another copy: exit 18, no kill after; dropping the
check fails at exit 0, want 18).
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