From 7b7f9a9828cf20db6f39dda0988836562f168beb Mon Sep 17 00:00:00 2001 From: Conduction Release Bot Date: Mon, 31 Aug 2026 23:13:31 +0200 Subject: [PATCH] chore(register): retire the scaffold example schema The descriptor carried exactly one schema, the scaffold's `example` placeholder, and ci-seed.sh asserted it was present after import as a proof that the import ran at all. Shillinq shipped the same untouched placeholder, so two apps claimed the slug `example` on a shared OpenRegister, where slugs are global. Measured on the dev instance: id 432 (shillinq) and id 1112 (keepiq), byte-identical two-property schemas. Keepiq keeps its secrets in its own lib/Db tables rather than as OpenRegister objects, so there is no real schema to put in its place. The descriptor now declares no schemas and no registers, and ci-seed.sh reports the schemas it finds instead of asserting one, matching what the adjacent `registers` branch already did and for the same stated reason. occ openregister:schemas:prune-retired --app keepiq --slug example --apply -> example (id=1112, app=keepiq): 0 objects, referenced by 1 register(s) DELETED (objects removed=0, table dropped=yes) --- lib/Settings/keepiq_register.json | 30 +++--------------------------- tests/e2e/ci-seed.sh | 14 +++++++------- 2 files changed, 10 insertions(+), 34 deletions(-) diff --git a/lib/Settings/keepiq_register.json b/lib/Settings/keepiq_register.json index ba2a4c0c..a03b5da4 100644 --- a/lib/Settings/keepiq_register.json +++ b/lib/Settings/keepiq_register.json @@ -2,8 +2,8 @@ "openapi": "3.0.0", "info": { "title": "Keepiq Register", - "description": "Register containing all schemas for the Keepiq application.", - "version": "0.1.1" + "description": "Register containing all schemas for the Keepiq application. v0.2.0 retires the scaffold `example` schema, which was the only entry. Shillinq shipped the same placeholder and slugs are global on a shared OpenRegister. Keepiq keeps its secrets in its own lib/Db tables rather than as OpenRegister objects, so it declares no schemas and no registers.", + "version": "0.2.0" }, "x-openregister": { "type": "application", @@ -14,31 +14,7 @@ "paths": {}, "components": { "schemas": { - "example": { - "slug": "example", - "icon": "FileDocumentOutline", - "version": "0.1.1", - "title": "Example", - "description": "Import canary. Keepiq stores its secrets in its own tables (lib/Db), not as OpenRegister objects, so this is the only schema in the descriptor — and tests/e2e/ci-seed.sh asserts it is present after import, which is what proves the OpenRegister import path actually ran. Do not delete it without moving that assertion to a real schema first.", - "type": "object", - "required": [ - "title" - ], - "properties": { - "title": { - "type": "string", - "title": "Title", - "description": "The title of the example object", - "example": "My example" - }, - "description": { - "type": "string", - "title": "Description", - "description": "An optional description", - "example": "This is an example" - } - } - } + } } } diff --git a/tests/e2e/ci-seed.sh b/tests/e2e/ci-seed.sh index 9b09e47b..53d528a7 100755 --- a/tests/e2e/ci-seed.sh +++ b/tests/e2e/ci-seed.sh @@ -312,15 +312,15 @@ elif kind == 'registers': print(f'[ci-seed] openregister registers present: {sorted(s for s in slugs if s)}') elif kind == 'schemas': - required = ['example'] + # REPORTED, NOT ASSERTED — for the same reason as `registers` above. + # lib/Settings/keepiq_register.json now declares no schemas at all. + # It used to carry the scaffold's `example` placeholder, which was + # asserted here as an import canary; that slug collided with shillinq's + # copy of the same placeholder on a shared OpenRegister, and Keepiq + # keeps its secrets in its own lib/Db tables rather than as OpenRegister + # objects, so there was never a real schema to put in its place. slugs = {field(i, 'slug') for i in items} print(f'[ci-seed] openregister schemas present: {sorted(s for s in slugs if s)}') - missing = [s for s in required if s not in slugs] - if missing: - print(f'::error::Keepiq schemas missing from OpenRegister after import: {missing}. ' - 'The register descriptor did not apply — check the import response above.') - sys.exit(1) - print('[ci-seed] schemas OK.') PY }