- add phrase routing for radio open/resume and genre launch
- inspect radio genre and station metadata before locking the outbound entity values
- prefer the same payload shape the menu path uses instead of a generic cloud speech reply
- Exit criteria:
- voice `open the radio` launches radio successfully
- voice `play country music` launches a country station
- no fallback cloud placeholder reply is spoken on success
### 2. ESML Apostrophe Encoding Bug
- Status: `ready`
- Tags: `polish`
- Why now: this is a small, high-confidence speech quality bug affecting many paths.
- Current evidence:
- [ResponsePlanToSocketMessagesMapper.cs](C:/Projects/JiboExperiments/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/ResponsePlanToSocketMessagesMapper.cs) currently escapes `'` to `'`
- the robot is pronouncing the encoded form instead of treating it as natural text
- Implementation notes:
- stop encoding apostrophes in spoken ESML text unless a capture proves a narrower escaping rule is needed
- keep escaping for `&`, `<`, and `>`
- Exit criteria:
- contractions and possessives sound natural again in live speech
### 3. Backup / OTA Yes-No Reliability
- Status: `ready`
- Tags: `protocol`, `stt`
- Why now: the update and backup prompts are real daily-use system flows and still feel fragile.
- Current evidence:
-`surprises-ota` is a real robot-side skill family in [index.js](C:/Projects/JiboOs/V3.1/build/opt/jibo/Jibo/Skills/@be/be/node_modules/@be/surprises-ota/index.js)
- we already improved constrained yes-no routing, but live tests still show some turns collapse into empty transcript or generic speech
- Implementation notes:
- keep local rules only on constrained replies
- improve empty-turn retry behavior for settings and OTA prompts
- capture whether stock OS uses a different yes-no prompt shape in backup versus update flows
- Exit criteria:
- spoken `yes` and `no` reliably work on backup and update prompts
- empty or missed turns retry locally without relaunching Nimbus
- Why now: the latest capture bundle shows a second yes-no family where the robot asks whether it can share something, and spoken `yes` is still being handled like unconstrained speech instead of a reply to the active prompt.
- Current evidence:
- the attached `jibo test 13` session includes both examples in one bundle:
- a proactive or share-style prompt where spoken `yes` was treated as generic speech
- a later update prompt where spoken `no` was accepted correctly
- Implementation notes:
- compare the active listen rules, ASR hints, and local skill ownership for the share-style prompt versus OTA prompts
- make constrained yes-no detection cover this prompt family without regressing the already-working update `no` path
- prefer local retry or local completion behavior over falling back into generic chat or Nimbus
- Exit criteria:
- spoken `yes` and `no` work on share / offer prompts with the same reliability as the OTA path
- constrained yes-no handling is generalized by prompt family instead of hard-coded only for updates
- Why now: clock, date, timer, and alarm menu hooks are already visible in captures and the robot repo has a real `@be/clock` skill.
- Current evidence:
- [protocol-inventory.md](C:/Projects/JiboExperiments/OpenJibo/docs/protocol-inventory.md) already tracks menu intents for `askForTime`, `askForDate`, `timerValue`, and `alarmValue`
-`@be/clock` exists in the robot skill inventory
- Implementation notes:
- compare our custom time/date path against actual menu payloads
- decide whether timer and alarm should stay robot-local with cloud acknowledgement, or whether cloud needs to shape the launch and follow-up turns
- Exit criteria:
- time/date behavior stays correct
- timer and alarm launch or set correctly from both menu and voice where applicable
- Why later: these are already stubbed in `.NET`, but the robot-side ownership still needs clearer mapping.
- Current evidence:
- current `.NET` placeholders live in [InMemoryJiboExperienceContentRepository.cs](C:/Projects/JiboExperiments/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/InMemoryJiboExperienceContentRepository.cs)
- Nimbus has personal-report hooks, but the exact cloud contract still needs confirmation
- Questions to answer:
- should calendar and commute be independent feature paths or sections inside personal report
- what minimum provider data shape lets Jibo present these naturally