side-quest 2.4.0 → 2.5.0 (recovery: landed on the GitHub mirror by mistake) #3

Merged
trtmn merged 3 commits from side-quest-2.4-2.5-recovery into main 2026-08-27 17:31:28 +00:00
Owner

These three commits were merged via PRs against the github mirror by mistake and never reached canonical main here; the mirror sync then reset GitHub's main back, orphaning them. Nothing was lost — this bundles them onto Forgejo main where they belong. Clean linear chain on top of a51fce7.

  • 2.4.0 — rescale the XP classifier: ~10x base awards (XP_BY_CR, RESPONSE_XP_TIERS), level-scaled rewards.
  • 2.4.1 — fix a bash 3.2 parse error (broker's apostrophe in a ${VAR:?...}) that stopped the launchd sync daemon on macOS.
  • 2.5.0 — transcript-heuristic Challenge Rating for the respond Stop hook (extract_turn_features + score_turn, no ML/deps); cap the level-award multiplier at 3x (the uncapped version was a cross-machine inflation runaway); self-echo guard + dedup ring 500→4000 + reconcile/reset-ledger to stop the shared ledger drifting.

112 tests pass, ruff clean, daemon bash -n clean. Already deployed to the author's machine and verified.

See also issues #1 (leaderboard) and #2 (/side-quest:signup) which build on 2.5.0.

These three commits were merged via PRs against the `github` mirror by mistake and never reached canonical `main` here; the mirror sync then reset GitHub's `main` back, orphaning them. Nothing was lost — this bundles them onto Forgejo `main` where they belong. Clean linear chain on top of `a51fce7`. - **2.4.0** — rescale the XP classifier: ~10x base awards (`XP_BY_CR`, `RESPONSE_XP_TIERS`), level-scaled rewards. - **2.4.1** — fix a bash 3.2 parse error (`broker's` apostrophe in a `${VAR:?...}`) that stopped the launchd sync daemon on macOS. - **2.5.0** — transcript-heuristic Challenge Rating for the `respond` Stop hook (`extract_turn_features` + `score_turn`, no ML/deps); cap the level-award multiplier at 3x (the uncapped version was a cross-machine inflation runaway); self-echo guard + dedup ring 500→4000 + `reconcile`/`reset-ledger` to stop the shared ledger drifting. 112 tests pass, ruff clean, daemon `bash -n` clean. Already deployed to the author's machine and verified. See also issues #1 (leaderboard) and #2 (`/side-quest:signup`) which build on 2.5.0.
- XP_BY_CR x10 (CR1 200->2,000 ... CR10 5,900->59,000)
- RESPONSE_XP_TIERS x10 (10/20/40/80/150/300 -> 100/200/400/800/1500/3000)
- awards now scale with level: base x 1.04**(level-1), one point under the
  1.05 level-threshold growth so each level takes ~1% more turns
- new level= arg on new_award_event/new_response_event; CLI passes current level
- per-tool tick unchanged at 10
- tests + docs updated; also finalizes the pending 2.3.1 MQTT-host setup fix
Apostrophe in ${XP_MQTT_HOST:?...broker's hostname} inside a double-quoted
string aborts bash 3.2 (macOS /bin/bash, used by the launchd plist) with
'unexpected EOF'. zsh -n missed it. Reworded to drop the apostrophe.
respond now scores a Challenge Rating from the turn transcript (files
edited, edit volume, investigation depth, tests, multi-turn span) via
extract_turn_features + score_turn — no ML, no deps — and awards the
CR-table amount, making it a full mechanical stand-in for the model's
Ambient XP award. Falls back to the tool-count tier with no transcript.

Inflation/drift fixes:
- LEVEL_AWARD_CAP=3.0 — 1.04**(level-1) was uncapped (~44x at L98) and
  minted every turn on every machine off a total it inflates: runaway.
- apply-remote drops self-echoed events (broker reflects our own
  publishes back; re-applying double-counts once the id ages out of the
  dedup ring — the actual cause of the phantom millions).
- dedup ring 500 -> 4000.
- new 'reconcile' (daemon runs on every reconnect): catches a drifted
  ledger up to the retained shared total; honours an operator epoch bump.
- new 'reset-ledger <total>': force a total + bump shared epoch so the
  whole fleet snaps to it (up or down). Ledgers gain an epoch field.

112 tests pass, ruff clean, daemon bash -n clean.
trtmn merged commit e803e6c152 into main 2026-08-27 17:31:28 +00:00
Sign in to join this conversation.
No reviewers
No labels
CR1
CR2
CR3
CR4
CR5
P0
P1
P2
P3
P4
P5
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
trtmn/agent-plugins!3
No description provided.