Repository navigation
fix(plugin-map, plugin-gantt): objectName is not a required registration input (objectui#7470) - #10390
Conversation
…ion input The registrations of object-map, map and object-gantt declared objectName required while the renderers read data, staticData or objectName and the zod schemas enforce one of the three via requireRecordSource. Drop required, state the rule in the input description, and correct the plugin-gantt README. Co-Authored-By: Claude <noreply@anthropic.com>
|
changeset-claim-re-read
|
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
Fixes #7470
Clause-②: no
What changed
Ruling 5809231477 (letter align, maintainer 「同意」), executed as written:
objectNamelosesrequired: trueon every map and gantt registration key, re-derived by symbol onorigin/main62bc8a250:object-map(namespaceplugin-map),map(namespaceview) andobject-gantt(namespaceplugin-gantt). The bareganttkey is already retired (objectui#8008), so gantt has one key today, not two.descriptionnow states the rule: the record source is one ofdata,staticDataandobjectName, and theobject-map/object-ganttschema refuses a block that declares none of them.packages/plugin-gantt/README.md: the "objectName(required)" sentence is corrected.Why the description is true (hypothesis 3)
requireRecordSourceinpackages/types/src/zod/objectql.zod.tschecksRECORD_SOURCE_KEYS(data,staticData,objectName) and adds an issue withparams.codeRECORD_SOURCE_REQUIREDwhen none is present. It is attached withsuperRefine(requireRecordSource('object-map'))onObjectMapSchemaandsuperRefine(requireRecordSource('object-gantt'))onObjectGanttSchema. The new tests assert this directly, so the sentence in the description is checked by a test, not copied prose.What the required flag did at runtime
sdui-parser'svalidateTreeturns a required input into amissing-required-propERROR. AstaticData-only map or gantt drew that error while the schema accepted the block and the renderer drew it. After this change it no longer does.Hypothesis 2: pins and generated artefacts
No pin or generated artefact asserted
required: truefor these inputs.apps/console/public/manifest.json(public-tier manifest) carries no map or gantt entry. No test inplugin-map/plugin-ganttread the inputs'required.content/docs/plugins/plugin-map.mdxandplugin-gantt.mdxalready say "At least one of data / staticData / objectName is required", which is correct, so they are not touched.packages/plugin-map/README.mdmakes no required claim.Tests
New tests:
packages/plugin-map/src/index.recordSourceInput-7470.test.tsx(both map keys) andpackages/plugin-gantt/src/__tests__/recordSourceInput-7470.test.ts. For each key they check four things:objectNameis declared (non-vacuity) and is not required; the description names the three sources; the named schema refuses a block with no source, withRECORD_SOURCE_REQUIRED; and, as a control, the same schema accepts astaticData-only block.All runs are on head
2083a24f8:pnpm exec vitest run packages/plugin-map/ packages/plugin-gantt/:Test Files 97 passed (97),Tests 705 passed (705).ablation-replace.mjs, and each anchor was confirmed to hit once.required: truerestored onobject-ganttgave1 failed / 9 passed. Onobject-mapalone it gave× 'object-map' — objectName is declared and not required, and onmapalone× 'view:map' — …. Each file was restored withgit checkout HEAD, the restore was proved by matching the HEAD blob hash, andgit diff HEADwas empty afterwards. The re-run was 10/10 green. The first map attempt was a no-op: the anchor was ambiguous (x2) and the tool refused it, so it was redone with per-key anchors.type-check(tsc --noEmit && tsc -p tsconfig.test.json) for both packages: exit 0, after building the dependency closure.--listFilesconfirms that both new test files are in the test program.Acceptance notes
mapkey has no zod arm.safeValidateSchemaon amapnode withstaticDatagivesinvalid_union("Invalid input"), whileobject-mapwith the same content passes. So on themapkey the description's sentence talks about theobject-mapschema, and a baremapnode is refused whatever it carries. This is reported to the seat as a finding and not changed here.data/staticDataare still not declared inputs on map or gantt.validateTreetherefore reports astaticData-only block asunknown-prop, which is a warning, not an error. The ruling did not order declaring them, so this is reported to the seat.object-calendar/calendarhave the same disagreement one plugin over:objectNameisrequired: truewhileObjectCalendarSchemacarriesrequireRecordSource('object-calendar'). That is out of this card's ruling and reported to the seat.Gates (local, targeted)
Exit 0:
check:new-line-citations(VERDICT … 0 new citation(s)),check:control-bytes,check:element-data-source-declaration,check:component-surface-parity(report-only; its divergences are on themap/ganttconfig inputs and existed before this change),check:changeset-claims(it points at.changeset/6470-gantt-dependency-field-deprecated.md, which names the gantt README; I read that paragraph and it is still true),check:pending-changeset-literals,check:vi-mock-*,check:test-path-roots,check:registry-bare-names,check:phantom-deps, changeset presence, andcheck-governed-queue-guard --test(NOT GOVERNED).NOT MEASURED, left to CI:
check:sdui-registration-pinsexited 2 because the console build it reads was absent.check:readme-exportsexited 1 because only part of the packages were built, so its population collapsed below its floors.ESLint over the 4 touched source and test files: 0 errors (warnings only, the same kinds as the file's existing ones). The config is not type-aware, so this diff cannot change verdicts on untouched files.
Session
https://claude.ai/code/session_01D486C1axmXnrkJMNUfz2eb,domain:ui#3seat.Generated by Claude Code