Skip to content

Slice: answer ambiguous Memory branch choices through DSH Ask Question in Channel #264

Closed

Description

@DoodleBears

Parent

Part of #259. Related: #261 and the existing Channel interaction surface.

What to build

When a Human request leaves the intended Memory branch unclear, the live Orchestrator Agent uses DSH's native Ask Question capability. The pending question appears as an actionable card in that PersonaBot DM's Channel; the Human selects an option or provides a custom answer, and the same Orchestrator Session continues to switch the chosen branch. A request that already names an unambiguous target proceeds directly without an extra question.

The Channel bridge is reusable for native Orchestrator questions, but this ticket's complete tracer is one real ambiguous Memory branch request and answer. Assignment Ask remains its distinct report-to-Orchestrator workflow.

Acceptance criteria

  • The implementation uses the running DSH version's native user-question Service and agent-scoped request/answer seam; it does not replace the model-facing Ask Question tool or introduce a parallel question authority.
  • A real LLM-backed Orchestrator request with two plausible existing Memory branches creates a Channel question card with source Session, question, options and custom-answer path; the turn waits for an answer.
  • Answering the card resumes the same Orchestrator Session, performs the chosen branch switch through the existing Orchestrator path, and closes the pending card. Refresh/reconnect does not offer an already-answered question as active.
  • Cancellation, stopped Session, stale answer, and unavailable answerer produce clear final states instead of an indefinitely misleading pending card.
  • An explicit Human branch target performs the normal switch without an Ask Question card.
  • Focused Host/Client interaction tests and a live DSH Human QA URL verify the question-to-answer-to-switch path. Save screenshots and stop for Human QA.

Blocked by

Activity

  1. added this to the v1.1 milestone on Sep 24, 2026
  2. added
    ready-for-agentFully specified, ready for an AFK agent
    area:fullstackEnd-to-end Host and Client implementation
    feature:memoryPersonaBot Memory Repository and Memory Service
    scope:tracerHuman-testable implementation slice
    on Sep 24, 2026
  3. modified the milestones: v1.1, v1.0 on Sep 24, 2026
  4. DoodleBears commented on Sep 25, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

  5. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Sep 25, 2026
  6. DoodleBears commented on Sep 25, 2026

    @DoodleBears
    ContributorAuthor

    Tracer bullet implemented in Draft PR #291 (task codex/local/01a0cde3-1621-7382-96a1-852758cedfc0).

    Real DSH Orchestrator E2E: an ambiguous request invoked native ask_user_question, the Channel recorded the question and Human answer, and the same Session continued to switch Memory branch and read its worktree. An explicit branch request switched directly without a second question. Focused Host and Client tests pass (8/8), including stale Session, cancellation race, option/custom answer, and expired card.

    Human QA is the current gate; the isolated QA URL is shared privately. Keep #264 open until that checkpoint passes.

  7. DoodleBears commented on Sep 25, 2026

    @DoodleBears
    ContributorAuthor

    Human QA found the target history-qa branch blocked by Target Memory branch is not accepted. Diagnosis: the synthetic history-only.md fixture was committed with raw Git outside the Memory Service, so its tip was not in the accepted commit ledger. Both observed switch attempts were retries in the same Orchestrator Session; neither switched. This was a QA fixture error, and the production guard correctly preserved main.

    I kept the raw commit on a backup QA branch, restored history-qa to its accepted base, and created the marker through the supported Human Memory save authority. The read-only acceptance check changed from known=false, ready=false to known=true, ready=true. A real Orchestrator Session then switched to history-qa, read Historical memory, QA 264., and switched back to main.

    The Channel question options are now larger and were checked at desktop and narrow viewports. A fresh native question is waiting for Human re-QA in Draft PR #291's isolated instance. Keep this issue open until that checkpoint passes.

  8. DoodleBears commented on Sep 25, 2026

    @DoodleBears
    ContributorAuthor

    Final Human QA — #264

    • The Human selected history-qa on the native DSH question card. The same Orchestrator Session resumed, switched main → history-qa at accepted HEAD 2b5d748bc4c73d70b98ba1b1ebe494d43d8dd0f3, then read history-only.md: Historical memory, QA 264.
    • The Human confirmed the enlarged option cards are comfortable to use. After refresh, the card shows answered and cannot be submitted again.
    • A separate live Orchestrator request naming main switched directly; the count of native questions stayed at 3, so no redundant question was created.
    • The earlier Target Memory branch is not accepted failure came from a raw Git QA fixture commit. That commit was backed up, and the test branch was recreated through the accepted Human Memory save path. No production guard was bypassed.

    Screenshots and the full implementation/test record are in PR #291.

  9. added 2 commits that reference this issue on Sep 25, 2026
  10. DoodleBears commented on Sep 25, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    • Agent: Codex
    • Task: codex/local/01a0cde3-1621-7382-96a1-852758cedfc0 (not a DSH Session)
    • State: completed
    • PR: #291, merged as 42bc73562f24820a9b694a129a8f1881dbbb8c23
    • Delivered: native DSH Ask Question appears in the PersonaBot Channel for an ambiguous Memory branch request; the Human answer resumes the same Orchestrator Session. Answered/cancelled/stale cards remain terminal after refresh. Explicit branch requests switch directly.
    • Verification: real LLM-backed Session asked, waited, switched to history-qa, and read Historical memory, QA 264.; the Human confirmed card size and answered state. Focused interaction tests, typecheck, lint, build, and CodeRabbit re-review passed. Review fixes also make status-read failures retryable and clear a selected option when a single-choice custom answer is entered.
    • Remaining Slice: answer ambiguous Memory branch choices through DSH Ask Question in Channel #264 scope: none. Parent Spec: Memory Git graph, full-body diff, and branch time travel #259 can close after confirming all five child slices.
  11. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:fullstackEnd-to-end Host and Client implementationfeature:memoryPersonaBot Memory Repository and Memory Serviceready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions