Parity lane coordinator brief
Dispatch order and per-lane backlog summary derived from the Hermes <-> Gormes parity matrix. Builders consult this to pick the next slice without waiting for an operator screenshot.
Parity lane coordinator brief
Companion to hermes-gormes-parity-matrix.
This brief is the dispatch surface for the parity operating system. Each lane (B-H) corresponds to one builder workflow that closes a specific class of parity gap.
Current P0 Dispatch State
2026-04-30 refresh: the earlier dogfood P0 trio is no longer pending.
Telegram production live-turn provider payload golden,
Telegram /status Hermes-format closeout, and
Gateway session token accounting parity are all complete/validated in
progress.json.
Do not dispatch those rows as planned work. For the live queue, pick the next
planned row directly from progress.json and verify it with
go run ./cmd/progress validate before handing it to a builder.
The tool/UX rows that closed the visible “Gormes only shows execute_code” class of bugs are also complete/validated:
Gateway stream/tool trace formatting fixture matrixTelegram typing action + placeholder lifecycle parityGateway active-turn policy manifest closeoutNative TUI Hermes tool progress + modal panel renderers
Per-lane backlog summary
Counts in this section are the original 2026-04-29 lane counts. The row state
annotations below have been refreshed from progress.json where later builder
passes have already landed; use progress.json as the current dispatch queue.
Lane B — Telegram UX and command parity
Completed:
- Telegram /status Hermes-format closeout (complete/validated).
- Telegram production live-turn provider payload golden (complete/validated).
- Telegram MarkdownV2 parse-mode rendering closeout (complete/validated;
ParseMode and parse-error fallback are covered by
internal/channels/telegram/bot_parse_mode_test.go). - Telegram reply_to_mode and reply-context parity (complete/validated).
- Telegram dynamic BotCommand menu wiring (complete/validated).
- Gateway stream/tool trace formatting fixture matrix (complete/validated).
- Telegram typing action + placeholder lifecycle parity (complete/validated).
- Gateway active-turn policy manifest closeout (complete/validated).
- Gateway slash registry parity sweep (recognized-name expansion) is covered
by the validated active-turn/registry rows; use
progress.jsonfor any remaining command-specific handler ports.
Lane C — Session/status/title parity
Completed:
- Gateway conversational session metadata refresh (complete/validated).
- Gateway session token accounting parity (complete/validated).
- Gateway /title manual session title command (complete/validated).
- Hermes memory tool over Goncho/local durable store (complete/validated, also Lane E).
Lane D — Prompt/provider identity parity
Mostly parity already (gateway level). 2 partial areas.
Completed:
- Telegram production live-turn provider payload golden (complete/validated).
- Live-turn model/tool guidance wiring (complete/validated).
P1:
- Toolset-aware skills prompt snapshot (planned, blocking the
umbrella
Hermes live-turn prompt assembly parity).
Lane E — Memory/Goncho parity
Missing/partial: 5 areas.
Completed:
- Hermes memory tool over Goncho/local durable store (complete/validated).
- Goncho memory provider lifecycle adapter (complete/validated).
P1:
- Long session management, Context compression, Manual compression feedback + context references, Kernel compression-boundary callback binding (all planned).
Lane F — Provider/auth/runtime parity
Mostly already complete or row-backed. 6 partial areas.
P0:
- Codex (planned provider runtime row).
P1:
- Bedrock provider runtime binding (planned).
- Gemini Cloud Code request/stream mapper (planned).
- OpenRouter compatible-provider routing (planned).
- Google Code Assist project/quota resolver (planned).
Completed:
- Hermes auth OAuth provider adapters (complete/validated).
- Gormes auth bare interactive credential-pool readout (complete/validated).
Lane G — Browser harness/tool parity
Missing/partial: 12 areas (most depend on the same harness binary).
P0:
- go-browser-harness Chromedp action backend (planned). Single parent for navigation/click/type/scroll/snapshot/screenshot/console.
Go browser harness binary repo + integration lane (placeholder)(new umbrella). Reserves the integration slot for the future sibling Go repo that hosts thego-browser-harnessbinary.
P1:
- Browser artifact and console render contract (planned).
- Telegram browser artifact rendering (planned).
Lane H — CLI/config parity
Mostly row-backed. 6 partial areas.
P1:
- 49-file CLI tree port (planned umbrella).
- Config, profile, auth, and setup command surfaces (planned).
- Diagnostics, backup, logs, and status CLI (planned).
- Gormes config edit/check/native schema-migrate closeout (planned).
- Hermes fallback provider chain CLI commands (planned).
Cross-lane dependencies
- Lane B MarkdownV2, Lane C session metadata, and Lane D production provider-payload identity are complete/validated. Keep their fixtures as regression gates rather than dispatching those rows again.
- Lane C auto-title wiring and
/titleare complete/validated. Future title work should be treated as UX polish or provider-cost policy, not as a blocker for/statusparity. - Lane G
go-browser-harness Chromedp action backendblocks all browser_ runtime behavior*: the contract is shipped but no navigation actually fires until that backend lands. - Lane G new umbrella (
Go browser harness binary repo) is a no-runtime row — it documents the integration plan and the JSON contract, and unblocks the actual Chromedp backend slice when the sibling repo materializes. - Lane E
Hermes memory tool over Goncho/local durable storeis complete/validated. Remaining memory work is long-session compression, frozen snapshot semantics, and provider lifecycle depth rather than the basic model-visiblememorytool.
Risks
- Tool name parity gap:
internal/tooltracenow centralizes the Hermes-style tool progress renderer across gateway, TUI, Slack, and Discord, and the fixture matrix is complete/validated. The remaining risk is configurable skin/tool emoji override parity: Hermes'skin_engine.pycan loadtool_emojis, while Gormes still uses a fixed Go mapping. - Session-ID format change implications: changing the fallback
format from
YYYYMMDD_HHMMSS_<fnv>toYYYYMMDD_HHMMSS_<random>will invalidate any persisted-but-not-yet-resolved chat -> session mapping. The session catalog and mirror outputs must be tested for the transition. - Identity injection path drift: the production provider-payload golden
is complete/validated. Keep it in the regression set any time
cmd/gormesmanager construction, live-turn prompt assembly, or provider role mapping changes. - MarkdownV2 fallback strategy: shipped. When Telegram rejects
MarkdownV2 parsing,
sendWithParseFallbackretries the byte-identical body once withParseModeunset; keep the fallback covered byTestBot_Send_FallsBackToPlainOnMarkdownV2ParseErroras later renderer rows change output shape. - Auto-title cost and notification policy: auto-title wiring is complete/validated. Future changes should preserve the auxiliary-failure evidence path and avoid adding unbounded background title calls.
- Browser harness binary not present: until the sibling
go-browser-harnessrepo exists, every browser_* tool will degrade to theErrBrowserHarnessUnavailableevidence path. This is correct behavior but means Telegram users cannot use any browser_* tool until Lane G ships. - Slash registry expansion noise: the recognized-name expansion is complete/validated. Future command ports should keep unavailable commands visible but should avoid routing slash text into the model.
Live Gateway Smoke Recommendation
After touching gateway/TUI/channel UX, Juan should still run these four Telegram interactions as a regression smoke, even though the original P0 rows are now complete/validated:
Whats ur name?— confirms identity reaches the provider. The bot must reply identifying as Gormes (per SOUL.md), not as ChatGPT. This guards the production provider-payload golden./status— confirms the field block renders with bold labels (validates Lane B #2 MarkdownV2), shows a real LLM-generated Title instead of “Telegram conversation with <user_id>” (validates Lane C metadata rows), shows accurate Created and Last Activity timestamps in Juan’s local time, and the bot reply is threaded to the/statusrequest (already parity but confirm the regression hasn’t crept back).*Send a long answer*followed by*reply*— confirms reply quoting works on the long-final case and that bold/italic/code actually render on mobile. Also confirms the coalescer’s fresh-final-then-delete behavior doesn’t break reply threading.- A code-block-heavy answer — e.g. ask for
/helpor any answer where the model is likely to emit triple-backticked code. Confirms the parse-mode wiring renders code fences correctly and falls back gracefully if MarkdownV2 parsing fails.
If any of these fail, classify it as a regression against the completed row first; create or refine a new row only when the current fixture does not cover the failing behavior.