Repository navigation
Closed
Labels
area:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:memoryPersonaBot Memory Repository and Memory ServicePersonaBot Memory Repository and Memory Serviceready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Milestone
Description
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
- Slice: switch an existing Memory branch in a live Orchestrator Session #261 — a working existing-branch switch for the answered choice to complete.
Metadata
Metadata
Assignees
Labels
area:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:memoryPersonaBot Memory Repository and Memory ServicePersonaBot Memory Repository and Memory Serviceready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Activity
DoodleBears commentedon Sep 25, 2026
Agent work claim
DoodleBears commentedon Sep 25, 2026
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.
fix: enlarge Channel question options
DoodleBears commentedon Sep 25, 2026
Human QA found the target
history-qabranch blocked byTarget Memory branch is not accepted. Diagnosis: the synthetichistory-only.mdfixture 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 preservedmain.I kept the raw commit on a backup QA branch, restored
history-qato its accepted base, and created the marker through the supported Human Memory save authority. The read-only acceptance check changed fromknown=false, ready=falsetoknown=true, ready=true. A real Orchestrator Session then switched tohistory-qa, readHistorical memory, QA 264., and switched back tomain.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.
docs: show Human-verified Memory question result
DoodleBears commentedon Sep 25, 2026
Final Human QA — #264
history-qaon the native DSH question card. The same Orchestrator Session resumed, switchedmain → history-qaat accepted HEAD2b5d748bc4c73d70b98ba1b1ebe494d43d8dd0f3, then readhistory-only.md:Historical memory, QA 264.mainswitched directly; the count of native questions stayed at 3, so no redundant question was created.Target Memory branch is not acceptedfailure 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.
fix: keep Channel questions retryable
Merge pull request #291 from BotHarness/codex/264-memory-ask
DoodleBears commentedon Sep 25, 2026
Agent work outcome
codex/local/01a0cde3-1621-7382-96a1-852758cedfc0(not a DSH Session)42bc73562f24820a9b694a129a8f1881dbbb8c23history-qa, and readHistorical 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.