Skip to content

impl(aggregator): session actions from /sessions and /attention - poke, answer, stop - keeper/orchestrator-mediated #1156

Open

Description

@dezren39

Finding

Evidence (live review 2026-10-26 ~22:40 CDT, laptop loopback + gh, cross-checked): /sessions lists 219 registry records and /attention lists live sessions, all read-only. When a session is stopped-for-question or stalled, Drew's dashboard offers no poke/answer/stop - the keeper and orchestrator do this from cron, and Drew watches. Session coverage also differs per page (footer says 61 feed records; page header counts 219 merged) - actions must target the merged identity, not whichever list Drew is looking at.

Proposal

Session row actions (poke = nudge via the owning server, answer = deliver text, stop = terminate) implemented as dashboard action records consumed by the keeper/orchestrator (which own the live servers), with results reported back onto the session row. Start with poke + answer; stop behind a confirm. All actions attributed + logged.

Acceptance

Acceptance criteria

  • Poke and answer round-trip on a real sandbox OpenCode session with visible effect + audit record — restating the body's Acceptance section as the criteria section.
  • Actions are unavailable (with reason) for sources that can't support them (e.g. Jules — keeper-mediated note instead).
  • Actions target the merged session identity (not whichever list the viewer is on); stop sits behind a confirm; all actions are attributed + logged.

Activity

  1. added
    kind/featureNew feature or capability request
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Agent note (pickup, 2026-10-27): building this now on branch pm/triage-write-path — the actions store (src/actions.ts, mirroring src/comments.ts), the three endpoints, and the card controls land together with #1152/#1154/#1156 as one slice of epic #1184, plus the orchestration-pass (+ keeper, for Jules session actions) consumer steps. Verb names align with the needs-user actions addendum from the start (answer/delegate/dismiss included in the enum; proposal verbs reserved for #1290–#1293).

  4. added 2 commits that reference this issue on Oct 27, 2026
  5. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Agent note (status, 2026-10-27): aggregator half SHIPPED (PR #1346 merge 2cc9324; deployed live). /sessions rows (live records only, merged registry identity) and /attention session cards carry poke / answer / stop: OpenCode sources get the full set; Jules renders answer enabled with poke/stop disabled ('keeper-mediated — answer only'); Muse renders all disabled ('no live control channel'); stop is behind a two-step confirm. Consumers assigned per (kind, source) and live in the job definitions (byte-verified insertions): orchestration-pass takes OpenCode session actions; the jules-review keeper gained a DASHBOARD SESSION ACTIONS — JULES step that polls kind=session&state=new, delivers answer text via :sendMessage under its step-3 rules, and posts results back.

    REMAINDER (why this stays open): the acceptance asks for a poke/answer round-trip on a real sandbox OpenCode session — the sandbox OpenCode server is intentionally OFF by Drew's standing order, and no live session was perturbed for a test. The first real dashboard session action on a live (e.g. laptop/OpenCode) session will exercise the path; the store + badges already render its pending/applied state. Reopen-check: post a poke from /sessions on a live session and watch /api/actions.json transition.

  6. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Agent note — observation still pending (not closing). Status of the live session round-trip observation: the session-action routing changed under this issue on 2026-10-27 — the sandbox OpenCode server is retired (the orchestration-pass body now rejects opencode-sandbox session actions with that note), and session actions route to the laptop server via the attach pattern (#1344). A live poke/answer/stop round-trip through the dashboard actions path has NOT yet been observed by an agent note here, so the observation closure remains open. The store + consumer plumbing is the same one proven live for triage/status-request (#1154, closed with its observation) and for the delegate loop (#1292).

  7. added
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    source/humanFiled directly by a human
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 28, 2026
  8. 9 remaining items

  9. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 1, 2026
  10. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — picked up (queue task 4890, OpenChamber scheduled lane)

    Revalidating the deployed laptop dashboard + live OpenCode route for the scoped poke/answer round-trip. I will only send an action to a verified suitable live session; no code changes unless the observation identifies an in-scope routing failure.

  11. added
    user/escalatedQueue or user escalation state
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 1, 2026
  12. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — escalated (queue task 4890, OpenChamber scheduled lane)

    The deployed dashboard and session-action controls are live; the actions queue had no pending items. I found no source-designated live test/demo session. The orchestration consumer may pick up queued actions later, so I did not submit a production poke or answer to an arbitrary session or unknown question.

    @dezren39 please provide a disposable opencode-laptop test session and the exact safe answer text, or explicitly authorize a specific existing session and answer text. Once supplied, I can run the dashboard round-trip and post the action IDs, consumer run ID, and before/after evidence. No code changes; #1156 remains open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/pm-stackpm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/blockedQueue or user escalation statequeue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/blockedQueue or user escalation stateuser/escalatedQueue or user escalation state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions