You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
finding(plugin-map/plugin-gantt): the registrations' designer-facing inputs still declare objectName required while the renderers read three record sources #7470
Ruled: 5809231477 · letter align (objectName not required on the designer face) · 2026-09-24T06:52Z
Found while implementing objectui#6939 group 6 (object-map + object-gantt), measured on origin/maind88e20f55. Out of that group's ruled scope (the zod mirrors and their TypeScript twins), so it is filed rather than swept in.
Measured
Both plugin registrations declare objectName as a REQUIRED designer input, on both of their registered keys:
packages/plugin-gantt/src/index.tsx:107 and :117 (object-gantt, gantt): the same line
Both renderers read their records from one of THREE keys, in this order — getDataConfig in plugin-map/src/ObjectMap.tsx and plugin-gantt/src/ObjectGantt.tsx: data, then staticData, then objectName. A block authored on staticData or data never reads objectName (six catalog entries do exactly that and render). So the designer face says objectName is required and the renderer does not: the same declared versus enforced disagreement objectui#6939 measured on the zod mirrors, one declaration face over. The mirrors are repaired by the group-6 PR (objectName optional behind a refinement that requires one of the three); the registrations were not part of that ruling and still say the old thing.
packages/plugin-gantt/README.md:133 restates the registration ("Both keys declare the same two inputs: objectName (required) and the gantt configuration object"), so it moves with whatever the registration decides.
Not decided here
Whether an inputs list can express "one of three" at all (the registry's input declaration is a flat list with a boolean required), or whether data / staticData should be declared as inputs beside objectName with none of the three marked required, is a shape question for the registry's declaration vocabulary. This card records the disagreement and does not pick a repair.
Related: objectui#6939 (the mirror repair — group 6, branch claude/issue-6939-objectql-source-refinement), objectui#6318 (the parent census).
Filed unassigned by the os-dev seat; grading and domain:* are the triage seat's. Generated by Claude Code, session session_01EMrWaQw3XS5DxTHxp4yRyC.
无运行时缺陷:六个 catalog 条目用 staticData / data 授权并正常渲染(卡片实测),校验器也已按 refinement 放行。
代价在设计器面:作者在设计器里被要求填一个渲染器不读的键,或者看到一个与校验器矛盾的必填标记。
不上 p2:设计器不是唯一授权入口,直接写元数据的作者不受影响;且没有静默错答。
⚠️ 卡片明确不裁的那个问题,是这张卡真正的难点
Whether an inputs list can express "one of three" at all (the registry's input declaration is a flat list with a boolean required), or whether data / staticData should be declared as inputs beside objectName with none of the three marked required, is a shape question for the registry's declaration vocabulary.
Ruling: UI closure batch 2 item 8 · letter align (the designer face stops claiming objectName is required) · maintainer 「同意」 (chat, director seat summon #29, session_01EcrTi7s5oDYPHS4Pi7h31d) 2026-09-24T06:49Z
Thread re-read to its last comment (5548706201) in this act. Read on objectui origin/main62597c5: packages/plugin-map/src/index.tsx:67 and :77 and packages/plugin-gantt/src/index.tsx:120 still declare { name: 'objectName', ..., required: true }. The typed contract says one of data / staticData / objectName: the TS field is optional, and the zod mirror carries requireRecordSource (objectui#6939).
Ruled: align the registration to the contract. Drop required: true from objectName on every map and gantt registration key. State in its description that the record source is one of data, staticData and objectName, and that the schema refuses a block with none. Correct packages/plugin-gantt/README.md (the "objectName (required)" sentence) in the same PR. ⛔ No new "one-of" vocabulary is added to the registry's input declaration, since the zod refinement is where "one of three" is enforced. ⛔ No change to the renderers' read order.
Claim: PM loop round 5 — domain:ui execution seat 3
Session: session_01D486C1axmXnrkJMNUfz2eb
Branch: claude/issue-7470-designer-objectname-not-required
Worktree: objectui-issue-7470
Domain: domain:ui
Seat: domain:ui#3
File surface: packages/plugin-map/src/index.tsx and packages/plugin-gantt/src/index.tsx (the registrations' objectName input loses required: true; its description names the three record sources), packages/plugin-gantt/README.md (the 「objectName (required)」 sentence), tests beside them, one .changeset/7470-…md (stop on breach; explain in the report)
Container & model: M, mode:subagent, model: opus (default judgement tier). dispatch-gates refuses objectui (the answer is quoted on objectui#10226's claim), so the tier is this seat's judgement.
Clause-②: no
Thread-read: 5809231477
Serial constraints cleared: open PRs (file lists read 2026-09-24T21:18Z) and live pm:dispatched claims: none touches this surface.
Ruling-ref: UI closure batch 2 item 8 · letter align, maintainer 「同意」 (5809231477). ⛔ No new one-of vocabulary in the registry input declaration, and ⛔ no change to the renderers' read order. Why Clause-②: no: the designer face stops over-claiming a requirement the typed contract and the zod refinement do not make. The schema's accept-set is unchanged.
{
"issue": 7470,
"status": "done",
"branch": "claude/issue-7470-designer-objectname-not-required",
"pr": "https://github.com/objectstack-ai/objectui/pull/10390",
"session": "session_01D486C1axmXnrkJMNUfz2eb",
"premise_still_valid": true,
"summary": "Carried out ruling 5809231477 (letter align) as written. I re-derived the keys by symbol on origin/main 62bc8a250: the registration keys that declare objectName required are object-map (plugin-map), map (view) and object-gantt (plugin-gantt). The bare gantt key has been retired since objectui#8008, so gantt has one key, not the two the card lists. objectName loses required: true on all three. Its description now says the record source is one of data, staticData and objectName, and that the object-map / object-gantt schema refuses a block with none. The plugin-gantt README sentence is corrected. No one-of vocabulary was added, no renderer or zod change was made, and the assignee was not touched (it is os-project-manager). H2: no pin or generated artefact asserted required: true. The console public manifest has no map or gantt entry, and the docs pages already say 'at least one of data / staticData / objectName'. H3 holds: requireRecordSource in packages/types/src/zod/objectql.zod.ts adds RECORD_SOURCE_REQUIRED when none of RECORD_SOURCE_KEYS is present, via superRefine on ObjectMapSchema and ObjectGanttSchema, and the new tests assert this. H4: plugin-map README and both mdx pages make no false claim, so they are untouched.",
"tests": "head 2083a24f8. (1) Under the lock: pnpm exec vitest run --maxWorkers=2 packages/plugin-map/ packages/plugin-gantt/ gave 'Test Files 97 passed (97) / Tests 705 passed (705)', VERDICT command-exit 0. (2) Reverse verification with the fix committed, using objectstack scripts/ablation-replace.mjs with the anchor hit confirmed at x1 each time and a trap that restores with git checkout HEAD. Restoring required on object-gantt gave 1 failed / 9 passed. On object-map alone it gave 'x object-map: objectName is declared and not required', and on map alone 'x view:map: ...'. Each restore was proved by matching the HEAD blob hash, and git diff HEAD was 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 with exit 3, so I redid it with per-key anchors. No dist step was needed, because the root vitest aliases resolve these packages to src. (3) type-check (tsc --noEmit plus tsc -p tsconfig.test.json) for both packages: exit 0 after a turbo build of the dependency closure (plugin-map^... and plugin-gantt^..., 14 tasks). The first attempt exited 2 because the closure was unbuilt, so that run is NOT MEASURED, not red. --listFiles shows both new tests in the test program. (4) Gates, each exit captured to a file: exit 0 for 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 the map / gantt config inputs and existed before), check:changeset-claims (it flags .changeset/6470-gantt-dependency-field-deprecated.md for the gantt README; I read that paragraph and it is still true), check:pending-changeset-literals, check:vi-mock-specifiers / inherit / override-shape, check:test-path-roots, check:registry-bare-names, check:phantom-deps, check-changeset-presence, and check-governed-queue-guard --test (NOT GOVERNED). NOT MEASURED: check:sdui-registration-pins (exit 2, reason: no console build) and check:readme-exports (exit 1, reason: population collapsed with the packages unbuilt); both are declared to CI. (5) ESLint over the 4 touched ts/tsx files: 4 files in its --format json output, 0 errors, 17 warnings (no-explicit-any and react-refresh, the same kinds as the files' existing ones). The config is not type-aware, so untouched files' verdicts cannot move. The self-scan for control bytes was clean.",
"mcp_calls": "0",
"api_writes": "2: POST /repos/objectstack-ai/objectui/pulls (draft, via the fleet-write relay, run 36062308735) and POST /repos/objectstack-ai/objectui/issues/7470/comments (this os-dev-report, via post-stamped). Plus 2 git pushes (the empty branch probe and the commit), which are not REST writes. Zero label writes and zero PR PATCH.",
"files_changed": [
"packages/plugin-map/src/index.tsx",
"packages/plugin-gantt/src/index.tsx",
"packages/plugin-gantt/README.md",
"packages/plugin-map/src/index.recordSourceInput-7470.test.tsx",
"packages/plugin-gantt/src/__tests__/recordSourceInput-7470.test.ts",
".changeset/7470-designer-objectname-not-required.md"
],
"head_sha": "2083a24f8",
"line_counts": "6 files, 1 commit. The PR body read back byte-identical: 5914 bytes sent and 5914 stored, with no differing index.",
"deviations": [
"The card and the ruling name two gantt keys or line :120. On current main object-gantt is the only gantt key (gantt was retired by objectui#8008), so three keys changed, not four.",
"The new test imports @object-ui/types/zod (a declared dependency) and does not use sdui-parser, which neither package declares. That kept package.json and the lockfile out of the diff. The sdui-parser missing-required-prop consequence is described in prose and not pinned."
],
"open_questions": [],
"out_of_scope_findings": [
"class: b · Contract: requireRecordSource('object-calendar') on ObjectCalendarSchema makes the record source one of data / staticData / objectName. The object-calendar and calendar registrations in packages/plugin-calendar/src/index.tsx still declare { name: 'objectName', type: 'string', required: true }, so sdui-parser validateTree raises the missing-required-prop ERROR on a staticData-only calendar that the schema accepts. This is the same disagreement objectui#7470 closes for map and gantt. Seam: spec:ObjectCalendarSchema.requireRecordSource → renderer:ObjectCalendarRenderer registration inputs · dedupe words: object-calendar objectName required, requireRecordSource calendar, missing-required-prop calendar, calendar registration inputs",
"class: b · Contract: the plugin-map README says the map key is 'the bare spec view-type name ... for a node authored with it directly'. On a built types dist, safeValidateSchema of a map node with staticData gives invalid_union 'Invalid input', while an object-map node with the same content passes. AnyComponentSchema declares no map arm, which is the shape objectui#8008 retired for gantt. Seam: spec:AnyComponentSchema (no 'map' literal) → renderer:ObjectMapRenderer registered as map/view · dedupe words: map node type no schema arm, bare map key registry, view:map invalid_union, map key retirement",
"class: b · Contract: ObjectMapSchema and ObjectGanttSchema declare data and staticData. The map and gantt registrations do not list them as inputs, so validateTree reports a staticData-only block as unknown-prop (a warning), which is the objectui#7712 shape. The ruling for objectui#7470 did not order declaring them. Seam: spec:ObjectMapSchema.staticData / ObjectGanttSchema.staticData → renderer:object-map / map / object-gantt registration inputs · dedupe words: object-map staticData unknown-prop, object-gantt data input undeclared, map registration staticData, record source inputs declared"
]
}
domain:ui seat 3, session_01D486C1axmXnrkJMNUfz2eb, 2026-09-24T21:36Z. Reviewed against the dev report (comment 5822635237) and the diff on the PR head.
Ruling align (5809231477) met as written.objectName loses required: true on every map and gantt registration key. Re-derived by symbol: object-map, map and object-gantt. The bare gantt key has been retired since objectui#8008, which is why three keys changed, not four. Each description names the three record sources and the schema's refusal of none, and the plugin-gantt README sentence is corrected. ⛔ No one-of vocabulary, no renderer change and no zod change.
The description sentence is true.requireRecordSource (packages/types/src/zod/objectql.zod.ts) raises RECORD_SOURCE_REQUIRED on ObjectMapSchema / ObjectGanttSchema when none of the three is present, and the new pins assert it. Reverse-verified per key: restoring required turns that key's case red.
Surface and trailers. The surface is inside the claim; the docs pages already said "at least one of". Trailers are model-free. Clause-②: no is confirmed, since the schema accept-set does not move.
Three class (b) findings from the report (the calendar registration's same required claim; the bare map key with no schema arm; data / staticData undeclared as registration inputs) are filed separately by this seat.
Next: ready + auto-merge once CI is green on the head.
🟢 LANDED — PR objectui#10390 merged as 3ef0b51c2 (merge queue)
domain:ui seat 3, session_01D486C1axmXnrkJMNUfz2eb, 2026-09-24T22:01Z. Merged 2026-09-24T22:00Z. Ruling align (5809231477) is on main.
Verified by content on objectui origin/main: no objectName input in packages/plugin-map/src/index.tsx or packages/plugin-gantt/src/index.tsx still carries required, and each of the three registration keys (object-map, map, object-gantt) states that the record source is one of data, staticData and objectName. The squash commit carries no model-named trailer.
Fixes #7470 closed the card completed, but the auto-close does not strip labels; pm:dispatched is removed in this stroke. The siblings this dev found are filed as objectui#10392, objectui#10393 and objectui#10394.
Activity
os-zhuang commentedon Sep 5, 2026
分诊 —
domain:ui/priority:p3/pm:queue/finding锚定 (anchoring):
packages/plugin-map/src/index.tsx+packages/plugin-gantt/src/index.tsx的注册面 ⇒domain:ui。在
origin/maina472b07上复核 —— 四处逐字成立,行号未漂两个包 × 两个注册键(
object-map/map、object-gantt/gantt),四行完全相同。README 的复述也在:
⭐ 上游那一半已经修好了 —— 这正是本卡存在的理由
本席在同一轮处理 #7296 与 #7313 时实测过 #6939 的产物:
⇒ zod 镜像与 TS 声明已经说"三选一",而设计器面仍然说"objectName 必填"。 这不是"两处都陈旧",是已修的一半与未修的一半现在互相矛盾 —— 比卡片立时的状态更该收拾。
定级理由
priority:p3:staticData/data授权并正常渲染(卡片实测),校验器也已按 refinement 放行。⭐ 这个自我限制是对的:
required: boolean表达不了"三选一"。所以本卡不是一次required: true → false的改动,而是一次词表能力的判断:required: false,并把data/staticData也声明为 inputs、三者都不必填requireRecordSource在保存时拒绝⛔ 分诊席不裁决。但指出最小方案的具体缺口(作者会在更晚的环节才被拒),因为那是选路的关键代价,而卡片没有展开。
⛔ 给执行席的边界
map与object-map说两种话。plugin-gantt/README.md:133)—— 卡片已指出它复述了注册内容。plugin-map的 README 本席没查,请一并确认。requireRecordSource对齐:设计器面表达的约束不能比校验器更严(现状)也不能更松到无约束(最小方案的缺口)。⛔ 若只能做到"更松",请在 PR 里写明这个已知缺口以及为什么可接受。safeValidateSchemabecause the Zod mirror names a key its renderer never reads (8 components) #6939 修好且是对的,本卡只动注册面。⛔ 分诊席不认领、不派单、不写码、不裁决词表能力问题。
Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
Ruling: UI closure batch 2 item 8 · letter align (the designer face stops claiming
objectNameis required) · maintainer 「同意」 (chat, director seat summon #29,session_01EcrTi7s5oDYPHS4Pi7h31d) 2026-09-24T06:49ZThread re-read to its last comment (5548706201) in this act. Read on objectui
origin/main62597c5:packages/plugin-map/src/index.tsx:67and:77andpackages/plugin-gantt/src/index.tsx:120still declare{ name: 'objectName', ..., required: true }. The typed contract says one ofdata/staticData/objectName: the TS field is optional, and the zod mirror carriesrequireRecordSource(objectui#6939).Ruled: align the registration to the contract. Drop
required: truefromobjectNameon every map and gantt registration key. State in its description that the record source is one ofdata,staticDataandobjectName, and that the schema refuses a block with none. Correctpackages/plugin-gantt/README.md(the "objectName(required)" sentence) in the same PR. ⛔ No new "one-of" vocabulary is added to the registry's input declaration, since the zod refinement is where "one of three" is enforced. ⛔ No change to the renderers' read order.Execution:
pm:queue·priority:p3·domain:uistand.Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
Claim: PM loop round 5 —
domain:uiexecution seat 3Session:
session_01D486C1axmXnrkJMNUfz2ebBranch:
claude/issue-7470-designer-objectname-not-requiredWorktree:
objectui-issue-7470Domain:
domain:uiSeat:
domain:ui#3File surface:
packages/plugin-map/src/index.tsxandpackages/plugin-gantt/src/index.tsx(the registrations'objectNameinput losesrequired: true; its description names the three record sources),packages/plugin-gantt/README.md(the 「objectName(required)」 sentence), tests beside them, one.changeset/7470-…md(stop on breach; explain in the report)Container & model:
M,mode:subagent,model: opus(default judgement tier). dispatch-gates refuses objectui (the answer is quoted on objectui#10226's claim), so the tier is this seat's judgement.Clause-②: no
Thread-read: 5809231477
Serial constraints cleared: open PRs (file lists read 2026-09-24T21:18Z) and live
pm:dispatchedclaims: none touches this surface.Ruling-ref: UI closure batch 2 item 8 · letter align, maintainer 「同意」 (
5809231477). ⛔ No new one-of vocabulary in the registry input declaration, and ⛔ no change to the renderers' read order. WhyClause-②: no: the designer face stops over-claiming a requirement the typed contract and the zod refinement do not make. The schema's accept-set is unchanged.Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
os-dev-report
{ "issue": 7470, "status": "done", "branch": "claude/issue-7470-designer-objectname-not-required", "pr": "https://github.com/objectstack-ai/objectui/pull/10390", "session": "session_01D486C1axmXnrkJMNUfz2eb", "premise_still_valid": true, "summary": "Carried out ruling 5809231477 (letter align) as written. I re-derived the keys by symbol on origin/main 62bc8a250: the registration keys that declare objectName required are object-map (plugin-map), map (view) and object-gantt (plugin-gantt). The bare gantt key has been retired since objectui#8008, so gantt has one key, not the two the card lists. objectName loses required: true on all three. Its description now says the record source is one of data, staticData and objectName, and that the object-map / object-gantt schema refuses a block with none. The plugin-gantt README sentence is corrected. No one-of vocabulary was added, no renderer or zod change was made, and the assignee was not touched (it is os-project-manager). H2: no pin or generated artefact asserted required: true. The console public manifest has no map or gantt entry, and the docs pages already say 'at least one of data / staticData / objectName'. H3 holds: requireRecordSource in packages/types/src/zod/objectql.zod.ts adds RECORD_SOURCE_REQUIRED when none of RECORD_SOURCE_KEYS is present, via superRefine on ObjectMapSchema and ObjectGanttSchema, and the new tests assert this. H4: plugin-map README and both mdx pages make no false claim, so they are untouched.", "tests": "head 2083a24f8. (1) Under the lock: pnpm exec vitest run --maxWorkers=2 packages/plugin-map/ packages/plugin-gantt/ gave 'Test Files 97 passed (97) / Tests 705 passed (705)', VERDICT command-exit 0. (2) Reverse verification with the fix committed, using objectstack scripts/ablation-replace.mjs with the anchor hit confirmed at x1 each time and a trap that restores with git checkout HEAD. Restoring required on object-gantt gave 1 failed / 9 passed. On object-map alone it gave 'x object-map: objectName is declared and not required', and on map alone 'x view:map: ...'. Each restore was proved by matching the HEAD blob hash, and git diff HEAD was 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 with exit 3, so I redid it with per-key anchors. No dist step was needed, because the root vitest aliases resolve these packages to src. (3) type-check (tsc --noEmit plus tsc -p tsconfig.test.json) for both packages: exit 0 after a turbo build of the dependency closure (plugin-map^... and plugin-gantt^..., 14 tasks). The first attempt exited 2 because the closure was unbuilt, so that run is NOT MEASURED, not red. --listFiles shows both new tests in the test program. (4) Gates, each exit captured to a file: exit 0 for 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 the map / gantt config inputs and existed before), check:changeset-claims (it flags .changeset/6470-gantt-dependency-field-deprecated.md for the gantt README; I read that paragraph and it is still true), check:pending-changeset-literals, check:vi-mock-specifiers / inherit / override-shape, check:test-path-roots, check:registry-bare-names, check:phantom-deps, check-changeset-presence, and check-governed-queue-guard --test (NOT GOVERNED). NOT MEASURED: check:sdui-registration-pins (exit 2, reason: no console build) and check:readme-exports (exit 1, reason: population collapsed with the packages unbuilt); both are declared to CI. (5) ESLint over the 4 touched ts/tsx files: 4 files in its --format json output, 0 errors, 17 warnings (no-explicit-any and react-refresh, the same kinds as the files' existing ones). The config is not type-aware, so untouched files' verdicts cannot move. The self-scan for control bytes was clean.", "mcp_calls": "0", "api_writes": "2: POST /repos/objectstack-ai/objectui/pulls (draft, via the fleet-write relay, run 36062308735) and POST /repos/objectstack-ai/objectui/issues/7470/comments (this os-dev-report, via post-stamped). Plus 2 git pushes (the empty branch probe and the commit), which are not REST writes. Zero label writes and zero PR PATCH.", "files_changed": [ "packages/plugin-map/src/index.tsx", "packages/plugin-gantt/src/index.tsx", "packages/plugin-gantt/README.md", "packages/plugin-map/src/index.recordSourceInput-7470.test.tsx", "packages/plugin-gantt/src/__tests__/recordSourceInput-7470.test.ts", ".changeset/7470-designer-objectname-not-required.md" ], "head_sha": "2083a24f8", "line_counts": "6 files, 1 commit. The PR body read back byte-identical: 5914 bytes sent and 5914 stored, with no differing index.", "deviations": [ "The card and the ruling name two gantt keys or line :120. On current main object-gantt is the only gantt key (gantt was retired by objectui#8008), so three keys changed, not four.", "The new test imports @object-ui/types/zod (a declared dependency) and does not use sdui-parser, which neither package declares. That kept package.json and the lockfile out of the diff. The sdui-parser missing-required-prop consequence is described in prose and not pinned." ], "open_questions": [], "out_of_scope_findings": [ "class: b · Contract: requireRecordSource('object-calendar') on ObjectCalendarSchema makes the record source one of data / staticData / objectName. The object-calendar and calendar registrations in packages/plugin-calendar/src/index.tsx still declare { name: 'objectName', type: 'string', required: true }, so sdui-parser validateTree raises the missing-required-prop ERROR on a staticData-only calendar that the schema accepts. This is the same disagreement objectui#7470 closes for map and gantt. Seam: spec:ObjectCalendarSchema.requireRecordSource → renderer:ObjectCalendarRenderer registration inputs · dedupe words: object-calendar objectName required, requireRecordSource calendar, missing-required-prop calendar, calendar registration inputs", "class: b · Contract: the plugin-map README says the map key is 'the bare spec view-type name ... for a node authored with it directly'. On a built types dist, safeValidateSchema of a map node with staticData gives invalid_union 'Invalid input', while an object-map node with the same content passes. AnyComponentSchema declares no map arm, which is the shape objectui#8008 retired for gantt. Seam: spec:AnyComponentSchema (no 'map' literal) → renderer:ObjectMapRenderer registered as map/view · dedupe words: map node type no schema arm, bare map key registry, view:map invalid_union, map key retirement", "class: b · Contract: ObjectMapSchema and ObjectGanttSchema declare data and staticData. The map and gantt registrations do not list them as inputs, so validateTree reports a staticData-only block as unknown-prop (a warning), which is the objectui#7712 shape. The ruling for objectui#7470 did not order declaring them. Seam: spec:ObjectMapSchema.staticData / ObjectGanttSchema.staticData → renderer:object-map / map / object-gantt registration inputs · dedupe words: object-map staticData unknown-prop, object-gantt data input undeclared, map registration staticData, record source inputs declared" ] }objectstack-fleet commentedon Sep 24, 2026
✅ ACCEPTED — PR objectui#10390 at
2083a24f8domain:uiseat 3,session_01D486C1axmXnrkJMNUfz2eb, 2026-09-24T21:36Z. Reviewed against the dev report (comment 5822635237) and the diff on the PR head.align(5809231477) met as written.objectNamelosesrequired: trueon every map and gantt registration key. Re-derived by symbol:object-map,mapandobject-gantt. The bareganttkey has been retired since objectui#8008, which is why three keys changed, not four. Each description names the three record sources and the schema's refusal of none, and theplugin-ganttREADME sentence is corrected. ⛔ No one-of vocabulary, no renderer change and no zod change.requireRecordSource(packages/types/src/zod/objectql.zod.ts) raisesRECORD_SOURCE_REQUIREDonObjectMapSchema/ObjectGanttSchemawhen none of the three is present, and the new pins assert it. Reverse-verified per key: restoringrequiredturns that key's case red.Clause-②: nois confirmed, since the schema accept-set does not move.Three class (b) findings from the report (the calendar registration's same
requiredclaim; the baremapkey with no schema arm;data/staticDataundeclared as registration inputs) are filed separately by this seat.Next: ready + auto-merge once CI is green on the head.
Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
🟢 LANDED — PR objectui#10390 merged as
3ef0b51c2(merge queue)domain:uiseat 3,session_01D486C1axmXnrkJMNUfz2eb, 2026-09-24T22:01Z. Merged 2026-09-24T22:00Z. Rulingalign(5809231477) is onmain.Verified by content on objectui
origin/main: noobjectNameinput inpackages/plugin-map/src/index.tsxorpackages/plugin-gantt/src/index.tsxstill carriesrequired, and each of the three registration keys (object-map,map,object-gantt) states that the record source is one ofdata,staticDataandobjectName. The squash commit carries no model-named trailer.Fixes #7470closed the cardcompleted, but the auto-close does not strip labels;pm:dispatchedis removed in this stroke. The siblings this dev found are filed as objectui#10392, objectui#10393 and objectui#10394.Generated by Claude Code
fix(plugin-map, plugin-gantt): objectName is not a required registrat…