Post-Hermes-Migration Ops Stabilization — Telegram Report Format, Critic Auto-Receive, Auto-Merge Monitoring
SummaryClosed 3 operational gaps accumulated since the Hermes Agent migration (Sprint 246). (1) Telegram report format — converted the large tables in SOUL.md and the lifecycle stop/start skill report templates into phone-readable bullets (pinned the no-large-table / 3-line-summary-first rule into the source). (2) Critic gate auto-receive — proved the end-to-end pipeline with a dummy .done marker: watch-critic.sh detection -> cron delivery -> real Telegram arrival. (3) CI-green auto-merge + merge monitoring standing infra — new enable-automerge.sh (squash --auto + watch marker) + watch-merge.sh + merge-watch cron (every 2m, standing), passing MERGED/CI-fail/WAIT 3-path smoke tests. No AlgoSu repo code changes (Hermes profile = git-untracked ops config, same pattern as Sprint 250).
Date: 2026-07-21
Goal
Close 3 operational gaps surfaced during real usage after the Hermes Agent migration (Sprint 246). Issues listed directly by the user (SaeMin Kim):
- Report format not optimized for Telegram — large tables / multi-column reports built for a wide terminal are hard to read on a phone screen.
- Critic gate auto-receive unverified — the watchdog cron is registered, but real Telegram arrival had not been verified recently.
- CI-green auto-merge / merge-green monitoring not automated — only patterns were described in the system prompt; without standing infra, every merge required manual intervention.
Decisions
D1. Telegram report format — convert tables to bullets in 3 sources
Memory held the Sprint 252 feedback (phone-readability first), but the sources that actually generate reports (SOUL.md, lifecycle skill templates) still used large tables (self-contradiction). Fixed the sources directly:
- SOUL.md
## Communication: pinned the Telegram-first rule — no large tables, 3-line summary first, one message = one key point, inline code only for code/SHA/commands. - algosu-lifecycle-stop step 6 completion report: 8-row large table -> bullets (removed the Sprint 252 violation case).
- algosu-lifecycle-start step 5 dashboard: table -> bullets (resolved self-contradiction with the Telegram-principles section).
D2. Critic gate auto-receive — end-to-end smoke test proof
The critic-gate-watchdog cron (every 2m, no_agent) was active, but real Telegram arrival was unverified since no real Critic ran after Sprint 251. Verified the full pipeline with a dummy .done marker:
- Created dummy
/tmp/critic-pr477.done->watch-critic.shdetection -> confirmed log-tail report stdout generation. - Ran cron
runto exercise the delivery layer -> confirmed real Telegram arrival -> confirmed marker consumption (.sent). - Re-confirmed the Sprint 252 hardened script logic (trap-guaranteed
.done+ abnormal-exit detection).
D3. CI-green auto-merge + merge monitoring as standing infra
Previously only the gh pr merge --squash --auto pattern was described in the system prompt, relying on Oracle memory each PR. Added standing infra:
enable-automerge.sh <PR>: one-line helper settinggh pr merge --squash --auto+ creating the watch marker.watch-merge.sh: PR-state polling — MERGED (merge-complete report), CI-fail (immediate alert), WAIT (open + CI-green not-yet-merged, silent), timeout — 3+1 paths. Failure detection viastatusCheckRollupCheckRun (status+conclusion) / StatusContext (state).merge-watchcron: every 2m standing (reusing the critic-gate-watchdog pattern), no_agent, telegram delivery.- MERGED / CI-fail / WAIT 3-path smoke tests passed, delivery proven (PR #477 merge-complete message arrived on Telegram).
D4. Discard the key/token rotation follow-up item
Per user instruction, discarded the 🔴 ANTHROPIC key / setup-token long-lived token rotation tracking item. Removed only from the pending list (MEMORY.md ## follow-up needed / (infra), sprint-window backlog); historical records (completed [x] items, technical memo files) preserved as facts. The actual keys/tokens remain valid and operational; reissue procedures are preserved in hermes-launchd-keychain-blocked.md.
Completed Items
- #1 Telegram format: SOUL.md / algosu-lifecycle-stop / algosu-lifecycle-start table -> bullet conversion
- #2 Critic auto-receive: dummy-marker end-to-end smoke test proof (real Telegram arrival)
- #3 Auto-merge + monitoring: new
enable-automerge.sh/watch-merge.sh+merge-watchcron, 3-path smoke passed - #4 Discarded key/token rotation tracking item (history preserved)
Commits: none — all deliverables live in the Hermes profile (~/.hermes/profiles/algosu-oracle/) as git-untracked ops config (same pattern as Sprint 250). Only the ADR (KR+EN) is recorded in the AlgoSu repo.
Critic result: Not applicable — no AlgoSu repo code changes (Hermes ops config change).
Backlog
- GA4 admin Enhanced Measurement OFF / production UAT / data stream URL alignment (user-direct)
- Server redeploy + live SEO verification (ops, Sprint 212/213 deliverables)
- Harness checkup
--fullCI scheduled automation (monthly cron) review (Sprint 209 follow-up)