Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Epic: migrate OVOS repos onto ovos-spec-tools

Aperta
#7 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 4 giorni

@JarbasAl ci sta già lavorando.

Dal 22/5/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

Epic — migrate OVOS repos onto ovos-spec-tools

Tracking epic for migrating the OVOS ecosystem onto ovos-spec-tools, the conformant reference implementation of the OVOS specifications. This is the concrete work behind the "all existing OVOS repos compliant" criterion of the adoption issue #5.

Why

The same machinery has been reimplemented and drifting across the ecosystem — template expansion duplicated in ~7 repos, the language-matching boilerplate (standardize_lang_tag + closest-match + distance < 10) in ~12, ad-hoc resource loaders in ~3, and the bus Message envelope re-implemented in ovos-bus-client alongside a separate FakeMessage in ovos-utils. ovos-spec-tools is the single conformant implementation each repo depends on.

Strategy

  • Each repo migrates directly onto ovos-spec-tools — no transitive routing through ovos-utils.
  • Waves by dependency order, so a repo lands before its dependents.
  • Conformance, not just refactor. The specs are prescriptive; migration may change behaviour (e.g. a malformed template now raises instead of silently degrading). Each such change is deliberate and tested.
  • Full normalised BCP-47 tag everywhere, no macro flag. Engines reconcile at match time via closest_lang.
Per-repo recipe
  1. Add the ovos-spec-tools dependency.
  2. Replace the local implementation with a call to ovos-spec-tools; delete the dead copy.
  3. Preserve the repo's public API as a thin wrapper (deprecation warning pointing at the spec-tools import).
  4. Run the repo's tests; reconcile divergences against the spec.
  5. For a repo shipping locale/, add ovos-spec-lint to CI.
  6. One PR per repo.

Progress

Wave 1 — foundation
  • ovos-spec-tools — released to PyPI; alphas through 0.5.0a1
  • ovos-utils — template expansion → OpenVoiceOS/ovos-utils#373
  • ovos-spec-tools — lang_matches / iter_locale_dirs → OpenVoiceOS/ovos-spec-tools#4
  • ovos-spec-tools — LocaleResources.find → OpenVoiceOS/ovos-spec-tools#6
  • ovos-spec-tools — keyword_form / vocabulary_keywords / utterance_contains / strip_samples → OpenVoiceOS/ovos-spec-tools#8
  • ovos-spec-tools — LocaleResources.voc_list / .voc_match / .remove_voc → OpenVoiceOS/ovos-spec-tools#10
  • ovos-spec-tools — OVOS-MSG-1 Message envelope → OpenVoiceOS/ovos-spec-tools#12
Wave 1.5 — bus Message primitive consolidation

The Message class moves to ovos-spec-tools as the single source of truth; ovos-bus-client and ovos-utils.fakebus re-export it.

  • ovos-spec-tools — Message envelope landed
  • ovos-bus-client — re-export + publish attachment → OpenVoiceOS/ovos-bus-client#215
  • ovos-utils — fakebus re-export + publish attachment → OpenVoiceOS/ovos-utils#375
Wave 2 — core libraries
  • ovos-bus-client — standardize_lang migration → OpenVoiceOS/ovos-bus-client#213 (merged in 2.0.0a1)
  • ovos-workshop — resource loading + dialog rendering → OpenVoiceOS/ovos-workshop#413
  • ovos-core — language matching (intent services) → OpenVoiceOS/ovos-core#763
  • ovos-plugin-manager — language matching (utils/config.py)
Wave 3 — pipeline plugins
  • nebulento → OpenVoiceOS/nebulento#27
  • padacioso → OpenVoiceOS/padacioso#55
  • palavreado → OpenVoiceOS/palavreado#25
  • linha-fina → TigreGotico/linha-fina#13
  • jurebes → TigreGotico/jurebes#11
  • ovos-padatious-pipeline-plugin → OpenVoiceOS/ovos-padatious-pipeline-plugin#70
  • ovos-adapt-pipeline-plugin → OpenVoiceOS/ovos-adapt-pipeline-plugin#42
  • ovos-ocp-pipeline-plugin → OpenVoiceOS/ovos-ocp-pipeline-plugin#130
Wave 4 — leaf consumers
  • ovos-lang-parser
  • ovos-option-matcher-fuzzy-plugin
  • ovos-solver-YesNo-plugin
  • skills shipping a locale/ folder

Forthcoming spec adoption

As the in-flight specs leave Draft, the per-repo recipe extends to adopting their topic names and conformance points. The topic-name catalogue belongs in ovos-pydantic-models, not in ovos-spec-tools; tracked separately.

Specs with pending implementation impact (open PRs — see issue #5):

  • OVOS-CONVERSE-1 (PR #25) — skill_id replaces owner_id; converse.ping/.pong topic rename; session_id removed from response data payload
  • OVOS-STOP-1 (PR #33, merged) — ovos.stop.ping/.pong capability-discovery convention; skill_id in conformance
  • OVOS-TRANSFORM-1 (PR #20) — skill_id in Match; per-type transformer ordering via session fields; blacklisted_*_transformers session keys
  • OVOS-PIPELINE-1 (PR #11, merged) — ovos.utterance.handle replaces recognizer_loop:utterance; ovos.intent.handler.* replaces mycroft.skill.handler.*; ovos.intent.unmatched replaces complete_intent_failure
  • OVOS-INTENT-4 §11 (PR #45) — session-scoped intent registration; context.session.session_id as registration key
  • OVOS-BRIDGE-1 (PR #43) — bridge conformance; session_id routing; site_id ownership
  • OVOS-AUDIO-IN-1 (PR #51) — ovos.utterance.handle emission contract; audio-transformer chain before STT
  • OVOS-USER-ID-1 (PR #54, issue #53) — session.user_id, session.auth_level, and four per-signal fields (voice_id, face_id, name_id, passphrase_id, default_user_id) in SESSION-1 field registry; recognition plugin and bridge conformance obligations; skill auth_level gating
Lingua principale
Nessun dato sulla lingua
Stelle
3
Fork
1
Merge medio
4g 1h
PR unite (30g)
12

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di OpenVoiceOS/architecture

Tutte le issue di OpenVoiceOS/architecture

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.