From 3759bc4c55459070dd550986ee42226e5325a27e Mon Sep 17 00:00:00 2001 From: Agent IX Date: Tue, 23 Jun 2026 08:47:57 -0700 Subject: [PATCH] feat(schema): add lexicon registry to module manifest (FR-043) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the top-level `lexicon` key (term -> {definition, optional category}) and its LexiconTermEntry $def, mirroring edge_types/roles. Modules declare a concrete-term lexicon the EARS object-aware vague-response check (FR-042) consumes; the engine carries no hardcoded noun list (ADR 0009). Optional — existing manifests validate unchanged. Co-Authored-By: Claude Opus 4.8 --- tests/module-manifest.schema.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/module-manifest.schema.json b/tests/module-manifest.schema.json index 5518485..b6749aa 100644 --- a/tests/module-manifest.schema.json +++ b/tests/module-manifest.schema.json @@ -116,6 +116,13 @@ "$ref": "#/$defs/RoleEntry" }, "description": "CR-003 (FR-040): mergeable role registry \u2014 capability tag -> {description}." + }, + "lexicon": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/LexiconTermEntry" + }, + "description": "FR-043: mergeable concrete-term lexicon \u2014 term -> {definition, optional category}. The EARS object-aware vague-response check (FR-042) consumes the merged keys as accepted concrete objects; the engine carries no hardcoded noun list." } }, "$defs": { @@ -545,6 +552,23 @@ "minLength": 1 } } + }, + "LexiconTermEntry": { + "type": "object", + "required": [ + "definition" + ], + "additionalProperties": false, + "properties": { + "definition": { + "type": "string", + "minLength": 1 + }, + "category": { + "type": "string", + "minLength": 1 + } + } } } }