chore(agents): implement v2 hardening and enforcement-ready QA

This commit is contained in:
2026-04-01 19:41:56 +02:00
parent 7121732fcf
commit dba589b495
31 changed files with 1349 additions and 78 deletions

View File

@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "module-manifest.schema.json",
"$id": "https://corecore.local/schemas/module-manifest.schema.json",
"title": "Module Manifest Schema",
"description": "Declarative schema for module.php manifest files under modules/<id>/.",
"type": "object",
@@ -61,40 +61,53 @@
"default": []
},
"ui_slots": {
"type": "object",
"description": "Keyed by slot name (e.g. 'aside.tab_panel'). Values are arrays of contribution objects.",
"patternProperties": {
"^.+$": {
"type": "array",
"items": {
"type": "object",
"required": ["key"],
"properties": {
"key": { "type": "string", "minLength": 1 },
"label": { "type": "string" },
"icon": { "type": "string" },
"href": { "type": "string" },
"permission": { "type": "string" },
"panel_template": { "type": "string" },
"template": { "type": "string" },
"path": { "type": "string" },
"script": { "type": "string" },
"export": { "type": "string" },
"selector": { "type": "string" },
"scope": { "type": "string" },
"config_path": { "type": "string" },
"default_config": { "type": "object" },
"phase": { "type": "string", "enum": ["early", "default", "late"] },
"type": { "type": "string" },
"order": { "type": "integer", "default": 100 },
"details_storage": { "type": "string" },
"details_open_active": { "type": "boolean" },
"base_url": { "type": "string" },
"group": { "type": "string", "description": "Sidebar nav group key for grouping related items under a details/summary section." }
"anyOf": [
{
"type": "object",
"patternProperties": {
"^.+$": {
"type": "array",
"items": {
"type": "object",
"required": ["key"],
"properties": {
"key": { "type": "string", "minLength": 1 },
"label": { "type": "string" },
"icon": { "type": "string" },
"href": { "type": "string" },
"permission": { "type": "string" },
"panel_template": { "type": "string" },
"template": { "type": "string" },
"path": { "type": "string" },
"script": { "type": "string" },
"export": { "type": "string" },
"selector": { "type": "string" },
"scope": { "type": "string" },
"config_path": { "type": "string" },
"default_config": {
"anyOf": [
{ "type": "object" },
{ "type": "array", "maxItems": 0 }
]
},
"phase": { "type": "string", "enum": ["early", "default", "late"] },
"type": { "type": "string" },
"order": { "type": "integer", "default": 100 },
"details_storage": { "type": "string" },
"details_open_active": { "type": "boolean" },
"base_url": { "type": "string" },
"group": { "type": "string", "description": "Sidebar nav group key for grouping related items under a details/summary section." }
}
}
}
}
},
{
"type": "array",
"maxItems": 0
}
},
],
"default": {}
},
"search_resources": {
@@ -103,14 +116,22 @@
"default": []
},
"asset_groups": {
"type": "object",
"description": "Asset group name → file list.",
"patternProperties": {
"^.+$": {
"anyOf": [
{
"type": "object",
"patternProperties": {
"^.+$": {
"type": "array",
"items": { "type": "string" }
}
}
},
{
"type": "array",
"items": { "type": "string" }
"maxItems": 0
}
},
],
"default": {}
},
"layout_context_providers": {
@@ -136,8 +157,8 @@
"properties": {
"key": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 1 },
"active": { "type": "boolean", "default": true },
"is_system": { "type": "boolean", "default": true }
"active": { "type": ["boolean", "integer"], "default": true },
"is_system": { "type": ["boolean", "integer"], "default": true }
},
"additionalProperties": false
},
@@ -177,22 +198,30 @@
"default": []
},
"event_listeners": {
"type": "object",
"description": "Event name → list of listener descriptors.",
"patternProperties": {
"^.+$": {
"type": "array",
"items": {
"type": "object",
"required": ["class", "method"],
"properties": {
"class": { "type": "string", "minLength": 1, "description": "FQCN implementing EventListener." },
"method": { "type": "string", "minLength": 1 }
},
"additionalProperties": false
"anyOf": [
{
"type": "object",
"patternProperties": {
"^.+$": {
"type": "array",
"items": {
"type": "object",
"required": ["class", "method"],
"properties": {
"class": { "type": "string", "minLength": 1, "description": "FQCN implementing EventListener." },
"method": { "type": "string", "minLength": 1 }
},
"additionalProperties": false
}
}
}
},
{
"type": "array",
"maxItems": 0
}
},
],
"default": {}
},
"deactivation_handler": {