Skip to content

OVOS-INTENT-2 v3: the .prompt resource role#4

Open
JarbasAl wants to merge 1 commit into
devfrom
spec/intent2-prompt-role
Open

OVOS-INTENT-2 v3: the .prompt resource role#4
JarbasAl wants to merge 1 commit into
devfrom
spec/intent2-prompt-role

Conversation

@JarbasAl
Copy link
Copy Markdown
Member

@JarbasAl JarbasAl commented May 22, 2026

Companion issue: #6

Summary

Adds a sixth resource role to OVOS-INTENT-2, taking the spec to version 3. Additive over v2.

What .prompt is

A .prompt file lives under locale/<lang>/ like any other localized resource. It differs from .dialog in three deliberate ways:

  1. Whole-file — the entire file content, verbatim, is one prompt (# lines and blank lines included)
  2. Plain text, not a template — no OVOS-INTENT-1 grammar; the only special construct is {name} substitution
  3. Conservative slots{name} substituted only when well-formed, caller-supplied, and not inside a fenced code block (CommonMark-aligned fence detection). HTML <!-- … --> comments stripped. Unfilled slots left as literal text

Compatibility

V3 is additive over V2: a V2 tool that does not recognise .prompt skips it.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 22, 2026

📝 Walkthrough

Walkthrough

This PR formalizes two independent specification additions to the OVOS architecture: OVOS-MSG-1 bus message contract (envelope, routing, session, serialization rules) and OVOS-INTENT-2 version 3 .prompt resource role (whole-file language-model prompt). The PR also restructures the overall specification documentation, adds a glossary, and aligns terminology across intent-system specs.

Changes

OVOS-MSG-1 Bus Message Specification

Layer / File(s) Summary
Bus message envelope and contract specification
message-object.md
Complete OVOS-MSG-1 specification: defines on-the-wire JSON envelope (type/data/context), routing-key semantics (source/destination as informational boundaries), session carrier (session_id with reserved "default", lang as BCP-47), message derivations (forward/reply/response), UTF-8 JSON serialization rules (RFC 8259 compliance, finite numbers, strict malformed handling), and producer/consumer conformance requirements. Explicitly excludes transport/security/delivery/ordering guarantees and central correlation mechanism.
Bus design rationale and routing model
APPENDIX.md
Design-philosophy sections explaining MSG-1 rationale: envelope/routing/session/derivation coupling, informational (not authoritative) source/destination boundaries, session_id="default" reserved semantics and absence in default equivalence, no central correlation/state stance enabling single-flip routing and HiveMind layer-2 extensibility without core modification, and updated known-gaps inventory relative to current OVOS code.
Changelog entry
CHANGELOG.md
New OVOS-MSG-1 entry summarizing normative bus message behavior: envelope shape, routing-key semantics, session fields, derivation rules, .response topic correlation, JSON serialization, and explicit out-of-scope declaration while confirming no new fields beyond existing code paths.

OVOS-INTENT-2 Version 3: .prompt Resource Role

Layer / File(s) Summary
Core .prompt resource specification
locale-resource-formats.md
Updates OVOS-INTENT-2 from v2 to v3: expands role table from five roles/two formats to six roles/three formats by introducing .prompt as whole-file plain-text format for language-model prompts. Refines common parsing rules (UTF-8, line stripping, blank/comment skipping) to scope only to five template roles; .prompt is read verbatim. Adds complete .prompt specification: whole-file handling, HTML comment stripping with malformed-<!-- detection, conservative {name} substitution (well-formed tokens, caller-supplied values, exempt within CommonMark triple-backtick fenced blocks), and optional-slot fallback to literal text. Updates loader conformance to enforce per-format behavior and reject empty/whitespace-only .prompt files.

Documentation Restructuring and Terminology

Layer / File(s) Summary
README.md documentation reorganization
README.md
Restructures README from mixed content to focused index: retains intro/draft-notice/goals/authority/specs/contributing/credits, removes embedded narrative on compatibility/versions/design/glossary/planned-work. Simplifies specifications table (ID/Document/Version/Status only; drops Scope column). Adds reading-order references pointing to APPENDIX/GLOSSARY/CHANGELOG for fuller context. Clarifies contribution workflow: normative spec changes require version bump + CHANGELOG entry; non-normative doc changes do not.
New GLOSSARY.md terminology reference
GLOSSARY.md
Introduces new non-normative GLOSSARY.md with terms table mapping OVOS concepts to definitions: templates/expansions, slots/capture maps, skills/identifiers, intents/qualified names, handlers/engines/orchestrator, registration lifecycle, message context/session fields. Includes cross-links to relevant spec sections for reader navigation.
APPENDIX.md expanded design context
APPENDIX.md
Extends APPENDIX with design-philosophy sections: updated preface broadening normative-document references and clarifying formalization-of-production-system framing; comparison updates (bus openability to layer-2 systems including HiveMind, i18n maturity with ovos-localize tooling); pipeline coverage rationale; new intent-grammar-and-resources (INTENT-1/2/3) design subsection; design-history and compatibility-levels restructuring with expanded spec-version ladder and evolution narrative; ovos-localize tooling repositioned relative to planned grammar-conformance corpus.
intent-definition.md terminology alignment
intent-definition.md
Updates intent-system specification terminology for consistency: registration contract changes from "host" to "orchestrator" for handler lifecycle responsibility; intent-engine requirements specify orchestrator routing for rejected registrations; match-result routing assigned to orchestrator; engine conformance aligns orchestrator as routing agent to bound handler. No semantic change—terminology clarification only.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • OpenVoiceOS/architecture#8: Introduces overlapping OVOS-MSG-1 bus message specification content (message-object.md, CHANGELOG/APPENDIX MSG-1 entries) covering envelope, routing, session, and derivation rules.

Poem

🐰 A prompt for the models, a message for the bus,
Specifications formalized, no fuss!
Six roles, three formats, whole files pristine,
The clearest that OVOS docs have seen.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR comprehensively addresses all coding objectives from linked issue #6: adds .prompt as sixth resource role, defines whole-file verbatim semantics with conservative {name} substitution, ensures additive compatibility, and updates spec documents including CHANGELOG/APPENDIX documenting design rationale.
Out of Scope Changes check ✅ Passed All changes are in-scope: locale-resource-formats.md defines the new .prompt role (v3), README/APPENDIX/CHANGELOG document the change and design rationale, glossary defines related terminology, and intent-definition.md uses consistent orchestrator terminology—all supporting the .prompt proposal.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'OVOS-INTENT-2 v3: the .prompt resource role' accurately and specifically summarizes the main change: introducing a new .prompt resource role and advancing OVOS-INTENT-2 to version 3.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch spec/intent2-prompt-role

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@locale-resource-formats.md`:
- Around line 333-346: The fenced code block containing the Weather assistant
example is missing a language tag which triggers MD040; update the opening fence
from "````" to "````text" so the block is explicitly labelled (i.e., locate the
block that begins with the Weather assistant heading and change its opening
fence to include "text" while leaving the closing fence unchanged).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d300bd35-7b91-48e6-9f78-af0229a3dcb3

📥 Commits

Reviewing files that changed from the base of the PR and between b286864 and c7e1c77.

📒 Files selected for processing (5)
  • APPENDIX.md
  • CHANGELOG.md
  • README.md
  • locale-resource-formats.md
  • sentence-template-grammar.md

Comment on lines +333 to +346
````
# Weather assistant

You are a concise weather assistant. Answer the user's question.

User asked: {query}

Reply as JSON shaped like {"summary": "...", "temp_c": 0}. The {response}
placeholder shown in the code block below is illustrative only:

```
{"summary": "{response}", "temp_c": 18}
```
````
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language identifier to the fenced example block.

The fenced block starting at Line 333 is missing a language tag (MD040), which can fail docs linting.

Suggested fix
-````
+````text
 # Weather assistant
 
 You are a concise weather assistant. Answer the user's question.
@@
 {"summary": "{response}", "temp_c": 18}

- +

</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 333-333: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@locale-resource-formats.md` around lines 333 - 346, The fenced code block
containing the Weather assistant example is missing a language tag which
triggers MD040; update the opening fence from "````" to "````text" so the block
is explicitly labelled (i.e., locate the block that begins with the Weather
assistant heading and change its opening fence to include "text" while leaving
the closing fence unchanged).

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (6)
GLOSSARY.md (1)

34-34: 💤 Low value

Consider "message bus" (two words) for standard spelling.

The term "messagebus" is flagged by static analysis as non-standard spelling. English convention typically uses "message bus" (two words). Unless "messagebus" is established OVOS-specific terminology that should be preserved, consider updating to the standard spelling.

📝 Proposed fix
-| **Orchestrator** | The component that coordinates intent matching and dispatch — owns the engines / pipeline plugins and routes match results to handlers ([INTENT-3 §6.1](intent-definition.md)). Distinct from the messagebus (transport) and from individual engines / plugins. |
+| **Orchestrator** | The component that coordinates intent matching and dispatch — owns the engines / pipeline plugins and routes match results to handlers ([INTENT-3 §6.1](intent-definition.md)). Distinct from the message bus (transport) and from individual engines / plugins. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@GLOSSARY.md` at line 34, Update the spelling of "messagebus" to the standard
two-word form "message bus" in the Orchestrator glossary entry (the line
describing Orchestrator that currently reads "Distinct from the messagebus
(transport) ..."); change the token "messagebus" to "message bus" (preserve the
surrounding punctuation and parenthetical "(transport)") and scan nearby
glossary entries for other occurrences of "messagebus" to make the same
replacement for consistency.
locale-resource-formats.md (5)

54-56: ⚡ Quick win

Minor clarity loss in line 55.

The edited text at line 55 changes from "a developer encodes a set" to "encodes a set", removing the subject. This makes the sentence slightly less clear about who is doing the encoding.

Suggested rewrite for clarity
-developer encodes a set of natural-language phrasings for the assistant to use, and
+a developer encodes a set of natural-language phrasings for the assistant to use, and

Or alternatively:

-developer encodes a set of natural-language phrasings for the assistant to use, and
+how a skill encodes a set of natural-language phrasings for the assistant to use, and
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@locale-resource-formats.md` around lines 54 - 56, The sentence on line 55
dropped the subject and reads unclearly; restore an explicit subject so it's
clear who performs the encoding. Update the sentence that references `.entity`,
`.voc`, and `.blacklist` (and the surrounding text referring to §4.3) to read
something like "they are how a developer encodes a set of natural-language
phrasings..." so the subject "a developer" is present and the clause clearly
indicates who encodes the phrasings.

388-389: ⚡ Quick win

Consider mentioning HTML comment stripping in loader conformance.

The .prompt loader rule states "retain the whole-file string; apply {name} substitution per-render" but doesn't mention HTML comment stripping, which §4.4 (lines 299-307) specifies must occur "before the file is handed to a language model." For completeness, the conformance section should explicitly include comment stripping as part of the render-time processing chain.

Suggested addition
    - `.prompt` — retain the whole-file string; apply `{name}` substitution
-     per-render (§4.4). No expander is involved.
+     per-render (§4.4). At render time, strip HTML comments (`<!-- ... -->`)
+     per §4.4, then apply `{name}` substitution. No expander is involved.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@locale-resource-formats.md` around lines 388 - 389, The `.prompt` loader rule
currently says "retain the whole-file string; apply `{name}` substitution
per-render" but omits the HTML comment stripping step required by §4.4; update
the `.prompt` loader conformance text to state that HTML comment stripping is
performed prior to any per-render `{name}` substitution (i.e., strip HTML
comments from the retained whole-file string before handing the content to the
language model and before running the substitution), or explicitly add a line in
the conformance section mandating HTML comment stripping as part of the
render-time processing chain referenced in §4.4.

299-307: 💤 Low value

Consider clarifying comment-stripping algorithm details.

The HTML comment stripping rule specifies behavior for malformed comments but doesn't explicitly state the matching algorithm (e.g., greedy vs. non-greedy, left-to-right order). For multiple separate comments like <!-- A --> text <!-- B -->, the intended behavior is inferable but not explicit.

Suggested clarification

Consider adding one sentence to clarify the matching order:

 **Author-only comments.** The one exception to "every character is part of
 the prompt" is **HTML-style comments**: a substring matching `<!-- … -->` is
-**stripped** before the file is handed to a language model. Comments may
+**stripped** before the file is handed to a language model. Each `<!--` is
+paired with its first subsequent `-->`, left-to-right. Comments may
 span multiple lines; nesting is not supported.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@locale-resource-formats.md` around lines 299 - 307, Update the
comment-stripping section to explicitly specify the matching algorithm: state
that HTML-style comments are matched left-to-right and non-greedily (each `<!--
… -->` pair closes at the first subsequent `-->`), so separate comments like
`<!-- A --> text <!-- B -->` are treated as two distinct comments; reference the
`<!-- … -->` token in the sentence and add it adjacent to the malformed-comment
behavior paragraph to make the intended matching order unambiguous.

390-394: 💤 Low value

Clarify "content" definition for .prompt empty-file check.

Line 392 states "a .prompt whose content is empty or only whitespace" must be rejected. It's unclear whether "content" refers to the raw file content (before HTML comment stripping) or the effective content (after stripping). Given that comment stripping is render-time processing (§4.4), "content" likely means raw file content, but this could be stated explicitly to avoid ambiguity.

Suggested clarification
 5. **Reject an empty file** — a resource file of any role MUST be treated as
    malformed if it is empty: a template role that yields no templates after
-   step 3, or a `.prompt` whose content is empty or only whitespace. Every
+   step 3, or a `.prompt` whose raw file content is empty or only whitespace. Every
    file MUST contribute content.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@locale-resource-formats.md` around lines 390 - 394, Clarify that "content"
for the `.prompt` empty-file check refers to the raw file contents before any
render-time HTML comment stripping (per §4.4): update the sentence in
locale-resource-formats.md so it explicitly reads that a `.prompt` whose raw
content (i.e., bytes/text as stored on disk, prior to comment stripping or other
render-time processing) is empty or only whitespace must be rejected; keep
references to template expansion/OVOS-INTENT-1 §3.6 intact.

325-333: 💤 Low value

Fence detection specification is pragmatic but slightly ambiguous.

Lines 327-328 state "Fence detection follows CommonMark" but then immediately allow implementations to "use simpler heuristics." The toggle model described ("opens or closes a fence") is simpler than full CommonMark fence matching (which requires matching fence lengths and characters). This is a reasonable pragmatic choice, but the phrasing could be clearer about the relationship between the normative behavior and the implementation latitude.

Suggested clarification

Consider rephrasing to make the relationship clearer:

 3. it does **not** lie inside a fenced code block — text between a pair of
    ```` ``` ```` fences (CommonMark fenced code block) is literal, so a
    `{name}` shown as an example inside a code block is never substituted.
-   Fence detection follows CommonMark: a line whose first non-whitespace
+   The normative behavior is to follow CommonMark: a line whose first non-whitespace
    content is three or more backticks opens or closes a fence; an open
    fence with no closing fence in the file extends to end-of-file.
    Implementations **MAY** use simpler heuristics (counting triple
-   backticks) so long as the well-formed cases of §4.4 render identically;
+   backticks as a toggle) so long as the well-formed cases of §4.4 render identically;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@locale-resource-formats.md` around lines 325 - 333, Update the paragraph that
begins with "Fence detection follows CommonMark" to clearly separate the
normative behavior from allowed implementation shortcuts: state that the
normative intent is to follow CommonMark (keep the description "a line whose
first non-whitespace content is three or more backticks opens or closes a fence;
an open fence with no closing fence in the file extends to end-of-file") and
then explicitly note that implementations MAY adopt a simpler heuristic (e.g.,
"counting triple backticks as a toggle") provided well-formed cases in §4.4
render identically; specifically edit the sentence containing "Fence detection
follows CommonMark" and the following sentence referencing "Implementations MAY
use simpler heuristics" to adopt the suggested phrasing and wording about
"normative behavior" and "simpler heuristics (counting triple backticks as a
toggle)" so the relationship is unambiguous.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@GLOSSARY.md`:
- Line 24: Update the glossary entry for "Resource file / role" to include the
missing `.prompt` resource role so it matches INTENT-2 §1; locate the line
containing the list of extensions (`.intent`, `.dialog`, `.entity`, `.voc`,
`.blacklist`) and add `.prompt` to that list and accompanying parenthetical
reference to the INTENT-2 section if present, ensuring the text now reads that a
skill's plain-text files include `.intent`, `.dialog`, `.entity`, `.voc`,
`.blacklist`, and `.prompt`.

In `@README.md`:
- Line 63: Update the specifications table entry for "OVOS-INTENT-2" to show
version 3 instead of 2 to match the PR and the changes in
locale-resource-formats.md; locate the table row containing the symbol
"OVOS-INTENT-2" (the line with "| OVOS-INTENT-2 | [Locale Resource
Formats](locale-resource-formats.md) | 2 | Draft |") and change the version cell
from "2" to "3", and verify the linked document locale-resource-formats.md also
reflects v3 so the README remains consistent.

---

Nitpick comments:
In `@GLOSSARY.md`:
- Line 34: Update the spelling of "messagebus" to the standard two-word form
"message bus" in the Orchestrator glossary entry (the line describing
Orchestrator that currently reads "Distinct from the messagebus (transport)
..."); change the token "messagebus" to "message bus" (preserve the surrounding
punctuation and parenthetical "(transport)") and scan nearby glossary entries
for other occurrences of "messagebus" to make the same replacement for
consistency.

In `@locale-resource-formats.md`:
- Around line 54-56: The sentence on line 55 dropped the subject and reads
unclearly; restore an explicit subject so it's clear who performs the encoding.
Update the sentence that references `.entity`, `.voc`, and `.blacklist` (and the
surrounding text referring to §4.3) to read something like "they are how a
developer encodes a set of natural-language phrasings..." so the subject "a
developer" is present and the clause clearly indicates who encodes the
phrasings.
- Around line 388-389: The `.prompt` loader rule currently says "retain the
whole-file string; apply `{name}` substitution per-render" but omits the HTML
comment stripping step required by §4.4; update the `.prompt` loader conformance
text to state that HTML comment stripping is performed prior to any per-render
`{name}` substitution (i.e., strip HTML comments from the retained whole-file
string before handing the content to the language model and before running the
substitution), or explicitly add a line in the conformance section mandating
HTML comment stripping as part of the render-time processing chain referenced in
§4.4.
- Around line 299-307: Update the comment-stripping section to explicitly
specify the matching algorithm: state that HTML-style comments are matched
left-to-right and non-greedily (each `<!-- … -->` pair closes at the first
subsequent `-->`), so separate comments like `<!-- A --> text <!-- B -->` are
treated as two distinct comments; reference the `<!-- … -->` token in the
sentence and add it adjacent to the malformed-comment behavior paragraph to make
the intended matching order unambiguous.
- Around line 390-394: Clarify that "content" for the `.prompt` empty-file check
refers to the raw file contents before any render-time HTML comment stripping
(per §4.4): update the sentence in locale-resource-formats.md so it explicitly
reads that a `.prompt` whose raw content (i.e., bytes/text as stored on disk,
prior to comment stripping or other render-time processing) is empty or only
whitespace must be rejected; keep references to template expansion/OVOS-INTENT-1
§3.6 intact.
- Around line 325-333: Update the paragraph that begins with "Fence detection
follows CommonMark" to clearly separate the normative behavior from allowed
implementation shortcuts: state that the normative intent is to follow
CommonMark (keep the description "a line whose first non-whitespace content is
three or more backticks opens or closes a fence; an open fence with no closing
fence in the file extends to end-of-file") and then explicitly note that
implementations MAY adopt a simpler heuristic (e.g., "counting triple backticks
as a toggle") provided well-formed cases in §4.4 render identically;
specifically edit the sentence containing "Fence detection follows CommonMark"
and the following sentence referencing "Implementations MAY use simpler
heuristics" to adopt the suggested phrasing and wording about "normative
behavior" and "simpler heuristics (counting triple backticks as a toggle)" so
the relationship is unambiguous.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3d1197d5-cd1c-4eb4-bbf6-f14dfef1e245

📥 Commits

Reviewing files that changed from the base of the PR and between c7e1c77 and 1a4db44.

📒 Files selected for processing (7)
  • APPENDIX.md
  • CHANGELOG.md
  • GLOSSARY.md
  • README.md
  • intent-definition.md
  • locale-resource-formats.md
  • message-object.md
✅ Files skipped from review due to trivial changes (1)
  • intent-definition.md

Comment thread GLOSSARY.md
| **Sample / sample set** | A concrete sentence produced by expansion; the set of all of them for a template ([INTENT-1 §4](sentence-template-grammar.md)). |
| **Slot** | A named placeholder `{name}` filled with a value rather than written out ([INTENT-1 §3.4, §5](sentence-template-grammar.md)). |
| **Capture map** | The names→values mapping a match produces — slot names or vocabulary names as keys ([INTENT-3 §7](intent-definition.md)). |
| **Resource file / role** | A skill's plain-text files: `.intent`, `.dialog`, `.entity`, `.voc`, `.blacklist` ([INTENT-2 §1](locale-resource-formats.md)). |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if locale-resource-formats.md §1 lists .prompt as a role
rg -n -A 10 -B 2 '^\s*##\s*1\.' locale-resource-formats.md | head -30

Repository: OpenVoiceOS/architecture

Length of output: 557


Add .prompt to the resource role list in GLOSSARY.md
GLOSSARY.md lists only .intent, .dialog, .entity, .voc, and .blacklist, but INTENT-2 §1 defines prompt as one of the supported file formats, so the glossary entry should include the .prompt role to match the PR’s stated “sixth resource role.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@GLOSSARY.md` at line 24, Update the glossary entry for "Resource file / role"
to include the missing `.prompt` resource role so it matches INTENT-2 §1; locate
the line containing the list of extensions (`.intent`, `.dialog`, `.entity`,
`.voc`, `.blacklist`) and add `.prompt` to that list and accompanying
parenthetical reference to the INTENT-2 section if present, ensuring the text
now reads that a skill's plain-text files include `.intent`, `.dialog`,
`.entity`, `.voc`, `.blacklist`, and `.prompt`.

Comment thread README.md
| ID | Document | Version | Status |
|----|----------|---------|--------|
| OVOS-INTENT-1 | [Sentence Template Grammar](sentence-template-grammar.md) | 2 | Draft |
| OVOS-INTENT-2 | [Locale Resource Formats](locale-resource-formats.md) | 2 | Draft |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Version inconsistency: OVOS-INTENT-2 should show version 3.

The PR objectives explicitly state "This PR proposes adding a sixth resource role to OVOS-INTENT-2: the .prompt file, advancing the spec to version 3", but the specifications table shows version 2. According to the review stack context, this PR includes locale-resource-formats.md changes that bump INTENT-2 to v3, so this table entry should reflect that version.

📝 Proposed fix
-| OVOS-INTENT-2 | [Locale Resource Formats](locale-resource-formats.md) | 2 | Draft |
+| OVOS-INTENT-2 | [Locale Resource Formats](locale-resource-formats.md) | 3 | Draft |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| OVOS-INTENT-2 | [Locale Resource Formats](locale-resource-formats.md) | 2 | Draft |
| OVOS-INTENT-2 | [Locale Resource Formats](locale-resource-formats.md) | 3 | Draft |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 63, Update the specifications table entry for
"OVOS-INTENT-2" to show version 3 instead of 2 to match the PR and the changes
in locale-resource-formats.md; locate the table row containing the symbol
"OVOS-INTENT-2" (the line with "| OVOS-INTENT-2 | [Locale Resource
Formats](locale-resource-formats.md) | 2 | Draft |") and change the version cell
from "2" to "3", and verify the linked document locale-resource-formats.md also
reflects v3 so the README remains consistent.

…OVOS

§4.4 .prompt:
- Author-only comments via HTML-style <!-- … --> stripped before the
  prompt reaches the model. Multi-line allowed, no nesting. Unmatched
  <!-- is malformed.
- Fenced-code-block detection clarified as CommonMark-aligned;
  simpler heuristics permitted as long as well-formed §4.4 cases
  render identically. Pathological inputs implementation-defined.

Prose: strip 'OVOS' project name from two §1 / §4.3 sentences.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JarbasAl JarbasAl force-pushed the spec/intent2-prompt-role branch from 1a4db44 to 34b7d0a Compare May 26, 2026 13:38
JarbasAl added a commit that referenced this pull request May 26, 2026
Split specs into intent / bus / orchestrator stacks. Add all 11
specs including in-review ones (INTENT-4 #9, INTENT-2 v3 #4,
TRANSFORM-1 #20, CONTEXT-1 #18, CONVERSE-1 #25). Add role-based
reading order.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
JarbasAl added a commit that referenced this pull request May 26, 2026
* docs: README — full spec-set refresh for the in-flight stack

Update the README to reflect the full spec set landing together:
the original intent stack (INTENT-1/-2/-3, MSG-1) plus the
in-flight specs (INTENT-4, SESSION-1, SESSION-2, PIPELINE-1,
TRANSFORM-1, CONTEXT-1, CONVERSE-1).

Changes:

- Specification table reorganised into three stacks — intent,
  bus, orchestrator — each with a one-paragraph narrative. This
  is the structure APPENDIX §1.2 already uses; the README now
  mirrors it for consistency.
- New 'Where to start' section with four reading-order paths
  matching common audiences: skill author, plugin author,
  orchestrator author, architecture surveyor. Addresses the
  'no clear entry point' friction first-time readers hit when
  the set went from 4 to 11 specs.
- New 'How this compares to other voice frameworks' section
  summarising APPENDIX §2's positioning (Home Assistant /
  hassil, Rasa, Alexa / Dialogflow, Rhasspy / Hermes, Wyoming).
  Brief; points at APPENDIX for detail.
- Reference-implementation section split: ovos-spec-tools
  covers the intent stack; bus and orchestrator stacks are
  acknowledged as not-yet-having-ground-up-reference-impl with
  pointer to APPENDIX §5 divergence catalogue.
- New 'Implementation status' section: clarifies the spec-set
  Draft→stable transition is tracked at #5; intent stack is
  most aligned with current ovos-core; known gaps cited from
  APPENDIX §7.
- Contributing section adds the one-file-per-PR rule (per
  AGENTS.md repo convention) and clarifies dev vs master
  targeting.
- Updated draft warning to reference APPENDIX §5 divergence
  catalogue and link to #5.

No normative-spec changes; README and supporting-metadata only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* README: establish voice OS framing; add OS-analogy table

Replace "voice assistant ecosystem" opening with "voice operating
system" framing. Add "What a voice operating system is" section with
OS-analogy table (scheduler, IPC, shared memory, process supervision,
loadable modules, syscall ABI) and the portability consequence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* README: full spec table — three stacks, open PR links

Split specs into intent / bus / orchestrator stacks. Add all 11
specs including in-review ones (INTENT-4 #9, INTENT-2 v3 #4,
TRANSFORM-1 #20, CONTEXT-1 #18, CONVERSE-1 #25). Add role-based
reading order.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JarbasAl JarbasAl changed the title Proposal: the .prompt resource role (OVOS-INTENT-2 v3) OVOS-INTENT-2 v3: the .prompt resource role May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant