Conversation
A session card reads 'N background agents' whenever it is working because of a delegated agent (XERK-245). When that agent is the oppositional QA pass (qa on the first pass, qa-delta after), the operator's own change is being adversarially exercised - a distinct thing to watch. The card now reads 'QA Review' instead, while staying in the Active category (it is still working). Mirrored across the label sites: sessions.html (agentWorkLabel), index.html's dashboard liveState, and Android's liveStateLabel. Glasses renders a working glyph only (no text label), so it is unaffected. Detection keys on the live agent's subagent_type, which the transcript scan already carries onto session.agents[].type and the hub preserves through sanitizeLiveAgents.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
On the Sessions page (and the Dashboard host card), a session that is working because of a background QA pass now reads "QA Review" instead of the generic "N background agents".
qasubagent (first QA pass) orqa-delta(every pass after) in the session's live-agent list flips the card's status text to "QA Review".working, so it does not move to Ready-for-review or Idle, and it fires no ready-for-review alert. Only the displayed label changes.Why
XERK-538. When QA is running, the operator's own change is being adversarially exercised — a distinct thing to watch for versus an ordinary fan-out. The bare agent count didn't say that.
How it works
Detection keys on the live agent's
type(thesubagent_type), which the transcript scan already carries ontosession.agents[].type(_scan_agent_entryin hub-agent.py) and the hub preserves throughsanitizeLiveAgents(server.js). No new wire field, no change to the "Working"/ready-for-review determination.Label mirrors updated:
turma/public/sessions.html—QA_AGENT_TYPES+qaReviewing(s)helper;agentWorkLabel(s).turma/public/index.html— same helper; dashboardliveStatebackground-agent branch.android/.../ui/CommonUi.kt—liveStateLabel(state, live)(Web ⇄ Android parity).Glasses is unaffected — it renders a working glyph (
!) with no text status label, so a QA session already shows correctly as working; there is no count text to mirror.Deliberately out of scope (noted so it's a documented decision, not an oversight):
chat.js's in-chat "Background agents…" working bar (shown inside an opened session's chat view) is a separate element and still reads the generic wording. XERK-538 targets the session card + dashboard host card; extending it to the chat bar can be a follow-up if wanted.How verified
cd turma && node --test→ 1702 pass, 0 fail, including new QA-Review cases insessions.test.jsanddashboard-livestate.test.js(real jsdom DOM render asserting the card innerHTML), plus retargeted count/pluralization tests.SessionsTest(Robolectric/JVM) with a newliveStateLabel reads QA Review for a QA agentcase → BUILD SUCCESSFUL, 0 failures.subagent_type → type → sanitizeLiveAgentsseam, and mutation-tested both platforms: neuteringqaReviewingfails 3 node tests; neutering the Android QA branch fails the Kotlin test. No defects found. Not directly verified: on-device Android rendering (no emulator; Robolectric + pure-function only) — the standing PARTIAL basis for every Android UI change.