Repository navigation
Release 0.12.56a1 - #471
Closed
github-actions[bot] wants to merge 516 commits into
Closed
github-actions[bot] wants to merge 516 commits into
github-actions[bot] wants to merge 516 commits into
Conversation
run 36235729054
locale/pl-PL/ ships dialogs, intents, entities and vocabularies and no skill.json, so the Polish store entry has no name and no description. Machine written from locale/en-US/skill.json. Unvouched: it waits for a Polish speaker. The native-reviewer registry has no pl-PL row at all, so there is nobody to tag. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36235844678
locale/pt-BR/ ships dialogs, intents, entities and vocabularies and no skill.json, so the Brazilian store entry has no name and no description. Machine written from locale/en-US/skill.json. Unvouched: it waits for femelo, the pt-BR reviewer on record. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36235862351
… space (#288) The es-ES bread-timer example read "un temporizador de pandurante 30 minutos". The machine fused "bread" and "for" into one word and dropped the bread. The sibling locales keep it: gl-ES "para o pan", it-IT "la cottura del pane". Three descriptions, en-US included, ended in a space. The store renders the value verbatim. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36245139594
…list (#298) Both files were a cross product of three bags of words translated one word at a time from an English option list. The first group held 'claro' for "clear", 'espetáculo' for "show", 'nomeação' for "appointment", 'obteve' for "got" and the fragment 'ter i' for "have I". They matched utterances nobody says, missed the ones people do say, and swallowed a question about what an alarm is. The templates now use the {alertkind} slot this locale already ships, as en-US does, instead of repeating a noun list inside each file. Measured with a real padacioso container on 23 ordinary requests: 4 of 23 before, 23 of 23 after. 'o que é um alarme', a question about what an alarm is, matched list_alerts before and does not now. The skill.json examples in #295 still match: 14 of 14, unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Three golden rows in test/end2end/golden_utterances_pt-PT.jsonl named sentences only the old templates matched: 'claro alarme', 'atualizar alarme' and 'existe alarmes'. They are replaced with sentences a Portuguese speaker says, which the new templates match: 'cancela todos os alarmes', 'quando é o meu próximo alarme' and 'quais são os meus alarmes'. Verified 16 of 16 in a padacioso container (T-5480). Co-authored-by: JarbasAi <jarbasai@mailfence.com>
run 36250953876
…d list (#300) Both files were a cross product of three bags of words, each word translated on its own from an English option list. They matched utterances nobody says, missed the ones people do say, and collided with other intents of this same skill. Measured with a real padacioso container, using this locale's own templates as the probes: 2 tie(s) between an intent of this skill and list_alerts before, 0 after. A tie has no winner, so the runtime picks one arbitrarily. The two ties were `tinc un esdeveniment` and `tinc una cita`, both create_event samples, tied with list_alerts because the bag held `vaig`/`tinc` and the kind noun. The templates now use the {alertkind} slot this locale already ships in entity/alertkind.entity, as en-US does, instead of repeating a noun list inside each file. The store examples in locale/ca-ES/skill.json also improve, from 3 of 14 to 7 of 14, with none lost. Unvouched: ca-ES has nobody on record in the native-reviewer registry. The {name} line this file was missing. Every line here rewrites cancel_alert out of the T-5467 word salad, and none of them let the user name the alert: measured across all nine open rewrites, 145 added lines and not one carrying {name}. Nine locales would have got a clean cancel_alert that still cannot cancel one alarm rather than all of them. The line is localize's, from T-5662, not this lane's. The shape is the locale's own "cancel my {alertkind}" line with one function word and the slot: `de` here. A bare appended {name} was proposed and rejected, because two adjacent slots give the engine no boundary to split on. Probe recorded by localize for this locale: `cancel·la la meva alarma de dentista` before: cancel_alert, name empty after: cancel_alert, name=dentista Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36264404508
…d list (#301) Both files were a cross product of three bags of words, each word translated on its own from an English option list. They matched utterances nobody says, missed the ones people do say, and collided with other intents of this same skill. Measured with a real padacioso container, using this locale's own templates as the probes: 1 tie(s) between an intent of this skill and list_alerts before, 0 after. A tie has no winner, so the runtime picks one arbitrarily. The tie was `dime que recordatorios`, a create_reminder sample, tied with list_alerts because the bag held `dime` and `recordatorios`. The first group also held `espectáculo` for "show" the performance and `conseguido` for "got". The templates now use the {alertkind} slot this locale already ships in entity/alertkind.entity, as en-US does, instead of repeating a noun list inside each file. The store examples in locale/es-ES/skill.json also improve, from 3 of 14 to 6 of 14, with none lost. Unvouched: es-ES has nobody on record in the native-reviewer registry. The {name} line this file was missing. Every line here rewrites cancel_alert out of the T-5467 word salad, and none of them let the user name the alert: measured across all nine open rewrites, 145 added lines and not one carrying {name}. Nine locales would have got a clean cancel_alert that still cannot cancel one alarm rather than all of them. The line is localize's, from T-5662, not this lane's. The shape is the locale's own "cancel my {alertkind}" line with one function word and the slot: `de` here. A bare appended {name} was proposed and rejected, because two adjacent slots give the engine no boundary to split on. Probe recorded by localize for this locale: `cancela mi alarma de dentista` before: cancel_alert, name empty after: cancel_alert, name=dentista Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36264482873
…d list (#302) Both files were a cross product of three bags of words, each word translated on its own from an English option list. They matched utterances nobody says, missed the ones people do say, and collided with other intents of this same skill. Measured with a real padacioso container, using this locale's own templates as the probes: 1 tie(s) between an intent of this skill and list_alerts before, 0 after. A tie has no winner, so the runtime picks one arbitrarily. The tie was `teño un evento`, a create_event sample, tied with list_alerts because the bag held `teño` and `evento`. The templates now use the {alertkind} slot this locale already ships in entity/alertkind.entity, as en-US does, instead of repeating a noun list inside each file. The store examples in locale/gl-ES/skill.json also improve, from 0 of 14 to 4 of 14, with none lost. Unvouched: gl-ES has nobody on record in the native-reviewer registry. The {name} line this file was missing. Every line here rewrites cancel_alert out of the T-5467 word salad, and none of them let the user name the alert: measured across all nine open rewrites, 145 added lines and not one carrying {name}. Nine locales would have got a clean cancel_alert that still cannot cancel one alarm rather than all of them. The line is localize's, from T-5662, not this lane's. The shape is the locale's own "cancel my {alertkind}" line with one function word and the slot: `de` here. A bare appended {name} was proposed and rejected, because two adjacent slots give the engine no boundary to split on. Probe recorded by localize for this locale: `cancela a miña alarma de dentista` before: cancel_alert, name empty after: cancel_alert, name=dentista Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36264576412
…e templates (#303) locale/ru-RU/ ships dialogs, intents, entities and vocabularies and no skill.json, so the Russian store entry has no name and no description. The 14 examples are lines the shipped ru-RU templates match, not translations of the en-US examples: 14 of 14 fire an intent in a real padacioso container, against an en-US control of 10 of 14 in the same tree. Machine written from locale/en-US/skill.json. Unvouched: it waits for putnik, the ru-RU reviewer on record. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36264726470
… bags (#318) Both files were a cross product of two word bags. reschedule_alert held no slot at all, so a French speaker could not name a time, a name or an old time, and timer_status held only the noise-group shape. Eight templates replace each file, each a sentence, each using the {schedkind} or {timerkind} entity the locale already ships, and each of the two files gains the {name} line that only en-US, da-DK and pt-BR had. Controls: three ordinary requests reach the right intent, 0 of 3 before this change and 3 of 3 after; a definition question reaches neither intent; every line expands with ovos_spec_tools.expand and no line holds adjacent slots. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
run 36264772780
run 40027905482
No code, intent or test loads these vocabularies, and en-US no longer ships them. The translated copies stayed behind in the other locales: calendar.voc, change.voc, choice.voc, delete.voc, items.voc, later.voc, media.voc, miss.voc, put.voc, query.voc, question.voc, remaining.voc, script.voc, synchronize.voc, time.voc. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
run 40033045784
handle_ocp_alarm took its branch before create_alarm asked for a time. With no time in the utterance it attached the media result to the next upcoming alarm, silently, instead of creating one. handle_create_alarm now resolves the expiration first, asking for the time exactly as it does for a plain alarm, and hands the new alarm to handle_ocp_alarm, which only attaches the media to that alarm. Fail-before: with one 07:00 alarm, "set an alarm that plays music" left the 07:00 alarm holding the media and spoke nothing. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
run 40036146477
The check that decides whether a media request names an existing alarm read only each alarm's next expiration. A daily 07:00 alarm plus a change_media_properties request for "jazz at 7 am on sunday" therefore created a second Sunday 07:00 alarm. Alert.rings_at now also matches the weekday, interval and until repeats of an alarm. When one or more alarms ring at the requested time, only those alarms are offered for the media, so an alarm on another day is never offered. Tests send change_media_properties straight to the skill, so the guard is reached whatever intent the matcher would have chosen. The test for a time that an existing alarm rings at seeds the next 07:00 instead of tomorrow's, which failed between midnight and 07:00. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
run 40111642346
The golden module boots through ovoscope.routing on the one-stage m2v prototype pipeline and records each golden and negative row in the session routing tally. The only routing gate is the session threshold in the pytest options, with no per-locale or per-row exceptions. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
run 40663426226
padacioso 2.5.4a1 counts an accented entity value as a member of its entity. With that, cs-CZ "nastav budík, aby přehrával hudbu" scores change_media_properties and create_alarm the same, and create_alarm wins. known_intent_ties.json records the tie. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
run 40741262063
OVOSSkill.voc_match and the module voc_match take the utterance first and the vocabulary name second. Three calls passed them the other way round, so each looked up a vocabulary named after the utterance and never matched. "this week" listed every alert instead of the week's, "my next alarm" on the list intent listed every alert instead of the next one, and "cancel" while choosing alarm media searched for "cancel" as media. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: JarbasAI <33701864+JarbasAl@users.noreply.github.com>
get_alert_type_from_intent no longer writes keyword matches into message.data and reads them back. A create intent names its alert type. Any other intent takes the type from the first alert type vocabulary in the utterance, else AlertType.ALL. "remind me to wake up the kids at 7" on create_reminder was an alarm, because wake.voc ranked before remind.voc. A create intent whose utterance held no type word, such as "set one for 10 minutes", was AlertType.ALL. handle_list_all_alerts listed every kind only when the injected "alert" key was set. A list request that named no kind spoke the intro and no alert. It lists every kind when the type is AlertType.ALL. kw_match had no other caller and is removed. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: JarbasAI <33701864+JarbasAl@users.noreply.github.com>
…d time (#461) When two or more alarms ring in the same minute at different next expirations (for example two alarms that repeat every two hours), _resolve_requested_alert keeps no candidate, because none has the requested time of day as its next expiration. The handler then said "You have no scheduled alarm" and changed nothing. _resolve_requested_alert takes ask_if_unmatched. When no candidate matches and the flag is set, it asks the user to pick from the alarms it was given, with the usual pick_multiple_entries intro. The change-media handler sets it when alarms ring at the requested time. The picker runs once: a declined answer is not asked a second time. Unit and MiniCroft tests fail on dev (the picker is never offered) and the decline tests fail on the earlier fallback (picker asked twice). Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: JarbasAI <33701864+JarbasAl@users.noreply.github.com>
run 40749755312
#463) "wake me up in 8 hours" added the duration to a zoned datetime. Python does that sum on the wall clock, so an interval that crosses a DST change in the configured zone came out one hour off: 18:16 WEST on the autumn change day rang 9 real hours later, and a 90-minute timer at 00:50 WEST on the change night rang after 2.5 hours. parse_alert_time_from_message, the repeat-interval default and parse_timedelta_from_message now do the arithmetic in UTC. Two readers of the result had the same wall-clock flaw. Alert._get_next_expiration_time replaced the stored offset with the zone, which moved a time in the repeated autumn hour back by one hour. spoken_duration subtracted two datetimes of one zone, so the spoken length was wrong across the change. The two test_skill assertions encoded the wall-clock rule. They now assert elapsed time. New tests freeze the clock at Lisbon DST-crossing instants. Without the fix 7 of the 9 new tests fail; with it all pass. The new tests import time_machine, so time-machine joins the test extra. An expired alert reports no expiration, so the two tests that read Alert.expiration also freeze the clock before the stored instant. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
run 40749769174
run 40749787128
run 40749806341
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
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.
Human review requested! This supersedes any earlier open release proposal for this repository.