From 3c881ddc95c1cba686a43826a3cc1c0bfdbc95e0 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 4 Sep 2026 14:19:34 +0000 Subject: [PATCH] docs(skills): record ComponentInput's five ADR-0049 tombstones in the plugin guide (objectui#7636) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `skills/objectui/guides/plugin-development.md` documented `inputType`, `min`, `max`, `step` and `placeholder` as ordinary writable optionals on `ComponentInput`. All five are ADR-0049 retirement tombstones on the real type: `?: never` on the interface in `packages/types/src/base.ts` and a `retirementTombstone()` named refusal on the Zod mirror in `packages/types/src/zod/base.zod.ts`. The guide therefore taught a write that is a `tsc` error at the authoring site and a named parse refusal at runtime. This is the PUBLISHED skills tree — the guide is copied into users' repositories — so the blast radius is outside this repo, which is exactly where the tombstones' named refusal was bought to help. The fence now records the tombstones as `?: never` and points at `description` as the published remedy, matching the real declaration's own wording. Verified against the real declarations rather than against the gate: `check:skill-examples` is green on this fence both before and after, because the snippet re-declares `ComponentInput` locally instead of importing it. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01KbJQ1y1J12nZxYzFWhP8Q3 --- skills/objectui/guides/plugin-development.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/skills/objectui/guides/plugin-development.md b/skills/objectui/guides/plugin-development.md index 398f8f5612..b020523860 100644 --- a/skills/objectui/guides/plugin-development.md +++ b/skills/objectui/guides/plugin-development.md @@ -103,11 +103,18 @@ type ComponentInput = { defaultValue?: any; required?: boolean; enum?: string[] | Array<{ label: string; value: string }>; - description?: string; + description?: string; // Also where a control hint or a numeric domain goes advanced?: boolean; // Hide by default in designer - inputType?: string; // Widget hint for the designer control - min?: number; max?: number; step?: number; // numeric bounds - placeholder?: string; + + // ADR-0049 RETIREMENT TOMBSTONES (objectui#5905) - DECLARED but UNWRITABLE. + // Authoring one is a `tsc` error here and a named refusal from the Zod + // mirror (`ComponentInputSchema`). They were never read and never published: + // the manifest serializer forwards only `name`, `type`, `required`, `enum`, + // `binding` and `description`, so an authored value was silently dropped. + // Remedy: delete the key and say it in `description`, which IS published. + inputType?: never; + min?: never; max?: never; step?: never; + placeholder?: never; // `BaseSchema.placeholder` is a different key, alive }; ```