From 9aff031ac9bd9cb560f17e07c2c25b9dad052510 Mon Sep 17 00:00:00 2001 From: Asterios Raptis Date: Fri, 17 Jul 2026 16:05:19 +0200 Subject: [PATCH] chore(engine): re-pin to 0.13.0 + refresh schema mirror (schema 1.7 -> 1.8) Engine v0.13.0 (learn-content-engine#66 / PR #67): picture_choice.src is now an anyOf of the classic assets/ path (<= 500 chars) OR an inline base64 data URI (250000-char cap). Additive - all existing path-src content validates unchanged. First pin bump since 0.12.2 with a REAL mirror content change (lesson + content-manifest schema to x-schema-version 1.8, quality-rules $schema-version tracked). Verified locally: validate_content.py all sets pass, make lint (pinned engine gate 0.13.0) 0 errors, check_schema_drift.py in sync against the 0.13.0 npm tarball. Co-Authored-By: Claude Fable 5 --- schema/content-manifest.schema.json | 2 +- schema/engine-version.txt | 2 +- schema/lesson.schema.json | 21 +++++++++++++++------ schema/quality-rules.json | 2 +- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/schema/content-manifest.schema.json b/schema/content-manifest.schema.json index 3c8fffd..64c09af 100644 --- a/schema/content-manifest.schema.json +++ b/schema/content-manifest.schema.json @@ -305,5 +305,5 @@ ], "title": "ContentManifest", "type": "object", - "x-schema-version": "1.7" + "x-schema-version": "1.8" } diff --git a/schema/engine-version.txt b/schema/engine-version.txt index 26acbf0..54d1a4f 100644 --- a/schema/engine-version.txt +++ b/schema/engine-version.txt @@ -1 +1 @@ -0.12.2 +0.13.0 diff --git a/schema/lesson.schema.json b/schema/lesson.schema.json index ffcdfed..c00069d 100644 --- a/schema/lesson.schema.json +++ b/schema/lesson.schema.json @@ -943,11 +943,20 @@ "type": "string" }, "src": { - "description": "Relative path inside the set's ``assets/`` directory ('assets/img/cat.png'). Resolved by the asset loader.", - "maxLength": 500, - "minLength": 1, - "title": "Src", - "type": "string" + "anyOf": [ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "maxLength": 250000, + "pattern": "^data:image/[a-z0-9.+-]+;base64,", + "type": "string" + } + ], + "description": "Image reference in one of two explicit formats (schema v1.8): a relative path inside the set's ``assets/`` directory ('assets/img/cat.png', <= 500 chars, resolved by the asset loader) OR an inline base64 data URI ('data:image/...;base64,...', its own 250000-char cap - sized for the reference consumer's 150-KiB upload compression: 153600 bytes -> 204800 base64 chars plus header). Repo content should prefer the assets/ path; the ``W-PIC-DATA-URI`` author lint flags inline data URIs.", + "title": "Src" } }, "required": [ @@ -1168,5 +1177,5 @@ ], "title": "Lesson", "type": "object", - "x-schema-version": "1.7" + "x-schema-version": "1.8" } diff --git a/schema/quality-rules.json b/schema/quality-rules.json index ba1a981..ef23cd5 100644 --- a/schema/quality-rules.json +++ b/schema/quality-rules.json @@ -1,5 +1,5 @@ { - "$schema-version": "1.7", + "$schema-version": "1.8", "_comment": "GENERATED from scripts/generate_lesson_schema.py (EXP-039). Do not edit. Shared quality minimums for the content quality gate (app + content repo).", "rules": { "minExerciseTypes": 2,