Repository navigation
finding(types): family closure — the remaining published "no error, no warning" claims in @object-ui/types the parser tier contradicts (4 measured sites + a census), after objectui#10928 and objectui#10959 #10981
Description
Activity
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsPath: write metadata — loud refusal with a true prescription | 缺项 (the family's remaining published claims) | P2
Triage: first grade —
bug·documentation·priority:p2·domain:spec·area:devpath·pm:queue(findingremoved)Triage: lands in
packages/types/src/**⇒domain:spec, the same lane and grade as the family's first two waves, objectui#10928 and objectui#10959.Rationale:
- Why p2. Under NORTH-STAR rule 4, published text that says something false is a product defect.
- The four sites stand on objectui
main79a935c87. Each file holds one such phrase:base.ts,data-display.ts,zod/form.zod.tsandzod/objectql.zod.ts. - One site names a different code. The
exportOptionssite drawstype-mismatch, notunknown-prop, so each clause names the code the parser really answers.
Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-09-28T15:02Z. ⛔ Not a claim, ⛔ not a dispatch.The serial condition is met. PR objectui#10980 (objectui#10959) merged at 2026-09-28T13:17Z.
Execution.
- Take the four measured sites, then the census as the closure nail. Every "no error … no warning" phrasing in
packages/types/src/**is either corrected to the parser's measured code for that key and value shape, or recorded as truly silent with its measurement. - Change only the false clause, as in PR objectui#10956 and PR objectui#10980.
@object-ui/types: patch,Clause-②: no.- Pin one string per site.
- addedarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iterateThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingSomething isn't workingdocumentationImprovements or additions to documentationImprovements or additions to documentationdomain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec laneobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec laneand removed
on Sep 28, 2026 objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsClaim: PM loop round 7
Session:session_012UwY3ahMixEFkfTUxMVkYm
Account:huangyiirene(the seat's linked user asGET /useranswers it; the card's assignee)
Branch:claude/issue-10981-silence-clause-closure
Worktree:objectui-issue-10981
Domain:domain:spec
Seat:domain:spec#1
File surface: the false clause only, in the four measured sites:packages/types/src/base.ts(binddocblock),packages/types/src/data-display.ts(TimelineSchema.eventsdocblock),packages/types/src/zod/form.zod.ts(FormSchema.moderefusal) andpackages/types/src/zod/objectql.zod.ts(exportOptionsdescribe text). The census nail may add further sites underpackages/types/src/**(non-test), each corrected only where its parser code is measured. Plus one new pin underpackages/types/src/__tests__/and one.changeset/*.md. The optionalpackages/componentslive-registry pin forheader-baris allowed only as a new test file there. Stop on breach and explain in the report.
Container & model:S,mode:subagent,model: opus(dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate)
Clause-②: no — message,.describe()and docblock text only; every accept or refuse verdict stays byte-identical.
Thread-read: 5872673096
Serial constraints cleared: PR #10980 (objectui#10959) merged as42687baf2, which meets the card's serial condition; PR #10972 (data-display.ts) merged ascc4e47638. Two open PRs touchzod/objectql.zod.ts: PR #10997 (hunks at ~1865) and PR #10986 (hunk at ~3183). TheexportOptionssite is at ~233 onmain4b742f41d, a disjoint region. No open PR touchesbase.ts,data-display.tsorzod/form.zod.ts(files API, all 9 open PRs).objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsos-dev-report
{
"issue": 10981,
"status": "done",
"branch": "claude/issue-10981-silence-clause-closure",
"pr": "#11006",
"session": "session_012UwY3ahMixEFkfTUxMVkYm — the parent seat's id (mode:subagent); both relay envelopes carried the same id",
"premise_still_valid": true,
"summary": "Only the false clause changed, on the four measured sites; every other joined byte is kept and every verdict is byte-identical. FormSchema.mode (zod message and .describe()) and the TimelineSchema.events docblock now say 'no render-time error or warning; only the parser tier'sunknown-propwarning noticed it'; the exportOptions note namestype-mismatch(the registration declares exportOptions as an object). The BaseSchema.bind data-table sentence gets its own wording, because it was not silent at render either: data-table has logged[ObjectUI] DataTable bind:since objectui#6575, a day before that docblock was written; it now names both that console warning and the parser tier'sunknown-prop. New pin silence-clause-parser-tier-closure-10981.test.ts (one string per site plus a closure walk over packages/types/src), the optional header-bar live-registry pin in packages/components, and@object-ui/types: patch; census A (no error … no warning) 4 → 0, F 1 → 0, all 302 C phrasings now followed by the parser tier's clause.",
"tests": "All at head ebd156e (after merging main 6650259, which carried PR #10986 on zod/objectql.zod.ts), exit codes captured before any pipe.pnpm --filter @object-ui/types build→ 0 (check-dist-completeness 134 files);type-check→ 0 (tsconfig.test.json --listFiles includes the pin);lint→ 0 errors (295 existing warnings, none in the new file);pnpm exec vitest run packages/types/→ 0, 272 files / 5993 tests. Outside types, 27 files / 931 tests → 0 (16 scripts/tests that read packages/types/src, schema-catalog component-fixture-declared-keys, the new components pin, container-declaration-ratchet, the 4 header-bar component tests, skill-guide-data-table-binding, data-table-bind-diagnostic, sdui-parser body-dialect-6771 and containment-declared-slot-9910).pnpm --filter '@object-ui/components^...' build+pnpm --filter @object-ui/components type-check→ 0 (new pin in tsconfig.test.json program); eslint on both new test files → 0. check-changeset-presence/no-major/fixed/overwrite → 0, check-changeset-claims → 0 (report-only); check:control-bytes, check:new-line-citations (0 new), check:pending-changeset-literals, check:test-path-roots, check:phantom-deps, check:self-import → 0; check-governed-queue-guard --test (7 paths) → NOT GOVERNED; control-byte self-scan grep → no hits. Live-registry probe (one-shot, deleted, never committed; components + fields + 18 plugins; manifestFromConfigs over every known key; validateTree per leg; render leg in act with console spies): form/ui:form × 5 mode spellings → exactly one unknown-prop 10/10, render 0 warn/0 err; timeline, view:timeline, plugin-timeline:timeline × events shapes → unknown-prop 7/7, byte-identical HTML, 0/0; data-table/ui:data-table × 2 bind paths × (no data, data: []) → unknown-prop 8/8, byte-identical HTML, exactly 1 console warning[ObjectUI] DataTable bind:per variant, 0 errors; object-grid/plugin-grid:object-grid × 3 array shapes → type-mismatch 6/6, byte-identical HTML vs the default-formats object, 0/0; controls separate unknown-prop / type-mismatch / not-a-container. Ablation after commit (objectstack ablation-replace.mjs WRAP, anchor hit 1, blob moved, restore blob == HEAD + empty git diff HEAD, re-proved by the driver, EXIT/INT/TERM trap): old clause back into mode 3/9 red, events 3/9, bind 3/9, exportOptions 2/9; exportOptions naming unknown-prop 1/9; zod/ai.zod.ts (unnamed by the pin) losing its parser-tier half 1/9; header-bar.tsx declaring title 4/6 on the components pin (first attempt was a no-op — replacement contained the anchor, tool refused, nothing ran; re-run). Legs 1–4 mutated blobs equal the base blobs byte for byte. No build between mutation and run: both pins read source (relative imports / vitest aliases). Census over joined text, enumerated with git ls-tree from the ref: base 4b742f4 and main 6650259 A=4 B=0 C=302 (300 with clause) D=0 E=0 F=1 G=6 H=25; head A=0 C=302 (302) F=0 G=2 H=24; positive control C fires on all 300 known #10928/#10959 clauses.",
"mcp_calls": "0 — no MCP GitHub tool was called",
"api_writes": "3 target writes, each through the fleet-write relay (each = one POST /repos/objectstack-ai/objectstack/dispatches, then the run's write as objectstack-fleet[bot]): POST /repos/objectstack-ai/objectui/pulls (pr_create, draft → #11006); POST /repos//issues/11006/assignees (label-write --assign huangyiirene, read back MATCHES); POST /repos//issues/10981/comments (this os-dev-report, post-stamped). Plus git push ×3 on the branch (empty-branch probe, the two commits, the merge). No label written (labeler applied package: types, package: components, tests on its own).",
"open_questions": [],
"out_of_scope_findings": [
"class: b · reach: exception: release-text (published skill text) plus the measured legs above (render:[ObjectUI] DataTable bind:console warning 8/8; parser: unknown-prop 8/8) · evidence:skills/objectui/rules/protocol.md, the 'Readers only.' paragraph, says abindondata-tablerenders its header over an empty body 'no error, no warning' — the same false claim this PR corrects in base.ts, on the governed skills/** surface this card may not touch. Seam: spec:skills/objectui/rules/protocol.md 'Readers only.' → renderer:data-table (dataTableBindDiagnostic console.warn) | runtime:sdui-parser validateTree. Same family as objectui#10981; route by the seat · dedupe words: protocol.md data-table bind no error no warning · Readers only data-table bind · skills protocol bind silent",
"class: b · reach: measured through the published@object-ui/sdui-parservalidateTree(the callcompile()makes for JSX pages) over the live-registry manifest:listwithbind: 'users'andtree-viewwithbind: 'users'each drawunknown-prop'has no prop "bind"', although both renderers readschema.bindthroughuseDataScope; no page-level door exercised · evidence: no registration declares abindinput (probe over every known key), and validate.ts BASE_PROPS has nobind. Seam: spec:BaseSchema.bind (@object-ui/types base.ts, declared for every node since objectui#6574) → runtime:sdui-parser validate.ts BASE_PROPS ('Base props every node may carry (mirrors BaseSchema) — never "unknown prop"') · dedupe words: sdui-parser BASE_PROPS bind · validateTree unknown-prop bind list tree-view · false warning bind reader",
"carrier: 承接者:无 · noted, not filed — unpublished test prose repeating the old claim: headers of packages/types/src/tests/base-bind-declared.test.ts and object-grid-export-options-refusal-7762.test.ts; mirror-partial-record-narrowing-8516.test.ts carries a different 'no error and no warning' claim (grid columns). In the PR's Acceptance notes.",
"carrier: 承接者:无 · noted, not filed — pending changesets .changeset/7762-object-grid-export-options-bare-array-refusal.md and .changeset/6575-data-table-bind-diagnostic.md describe the pre-fix behaviour in the old words; pending changesets were out of scope by dispatch. In the PR's Acceptance notes.",
"carrier: 承接者:无 · noted, not filed — census net H ('no diagnostic' nouns): a few unscoped claims about an authored value (ai.ts maxResults, crud.ts, data-display.ts ×3, zod/data-display.zod.ts) were not measured; outside the card's phrasing family. In the PR's Acceptance notes."
]
}
Generated by Claude Code
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsACCEPT: PR #11006 at
ebd156ef5. Landing held on a red that belongs tomain. From thedomain:spec @ objectuiseat, sessionsession_012UwY3ahMixEFkfTUxMVkYm.The review checklist was run against GitHub.
-
Form.
- Draft to
main; first lineFixes #10981; aClause-②: noline with its reason; assigneehuangyiirene. - 7 files, +345 / −5, within claim
5873069682: the four measured sites, one pin underpackages/types/src/__tests__/, the optionalheader-barpin as a new test file inpackages/components, and one changeset.
- Draft to
-
Text only. The seat read the diff on the head. The four edits change only the silence clause:
- the
FormSchema.moderefusal string; - the
TimelineSchema.eventsdocblock; - the
BaseSchema.binddocblock; - the source note above
OBJECT_GRID_EXPORT_OPTIONS_GUIDANCE.
Every
retirementTombstone,strictObjectandneveris untouched. - the
-
Contract review. Record
5874097593is PASS on this head.- ① The four clauses. Each clause is checked against the registration it describes:
unknown-propforform+mode;unknown-propfortimeline+events;- a render-time console warning plus
unknown-propfordata-table+bind. The separate wording is right, since[ObjectUI] DataTable bind:predates the docblock; type-mismatchfor anexportOptionsarray.
- ① Census. The nail re-derives to zero, and there is no fifth site.
- ②
@object-ui/types: patchandClause-②: noare right. - ③ Every out-of-scope finding is answered or escalated.
- ① The four clauses. Each clause is checked against the registration it describes:
-
CI. 43 check-runs on the head: 39 success, 3 skipped, and 1 failure,
Bundle Analysis.- That failure is
main's own: its push run at665025908is red with the same figures. objectui#10996 hasmain17 B over the eager-closure ceiling since PR fix(plugin-form): MasterDetailForm resolves its I18nLabel title, submitText and cancelText (objectui#10935) #10986. - The record bounds this head within 42 B of
main. This diff's only emitted-string edit sits behind the lazytypes-zodboundary. Stand-down note5873980420.
- That failure is
-
Governed surface. None;
Governed Surface Queue Guardis green.
Routed from ③:
- objectui#11008:
sdui-parserBASE_PROPShas nobind. The record adds thathiddenandplaceholderare missing too (to be measured). It prefers the reader-declaration route, which keeps this PR'sdata-tablesentence true, and owes adata-table+bindparser pin. - objectui#11009: the
skills/objectui/rules/protocol.mdcopy of thedata-table+bindsentence, on the governed surface. - Noted, not filed (repair when touched):
- the three test headers;
- the header of
dataTableBindDiagnostic.ts; - two pending changesets that narrate their own pre-fix state;
- the unmeasured "no diagnostic" nouns.
Landing: not armed. The seat marks this PR ready and enables auto-merge once
Bundle Analysisis green on its head, which needs objectui#10996's remedy onmainand then amainmerge into this branch.-
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsos-dev-report
{
"issue": 10981,
"status": "done",
"addendum": "merge-only round for PR #11006; no file edits",
"branch": "claude/issue-10981-silence-clause-closure",
"pr": "#11006",
"session": "session_012UwY3ahMixEFkfTUxMVkYm — the parent seat's id (mode:subagent)",
"head": "623015608",
"merge_parents": "ebd156ef5 (previous head) + 6c57c77 (origin/main, carries PR #11018 for objectui#10996)",
"diff_vs_main": "git diff --stat 6c57c779e HEAD: the same 7 files as before (345 insertions, 5 deletions)",
"gates": "All at 6230156, exit codes captured before any pipe.pnpm exec vitest runof the two pins (types closure pin + components header-bar pin) → 0, 2 files / 15 tests passed.pnpm --filter @object-ui/types type-check→ 0. check-changeset-presence → 0, check-changeset-no-major → 0, check-changeset-fixed → 0.",
"census": "Re-derived on the merged tree (67 non-test .ts files of packages/types/src, enumerated with git ls-tree from the ref). Head 6230156: A (no error … no warning) = 0, B = D = E = F = 0; C = 314, all 314 followed by the parser tier's clause. Control on main 6c57c77: A = 4 and F = 1 (the four sites this PR corrects), C = 314 with 312 followed; main's objectui#10928 clause count moved from 282 to 294 with the newly landed refusal texts, all carrying the clause.",
"notes": "The worktree had been removed at the end of the first round; it was re-created on the existing local branch at ebd156e (equal to the remote head) and re-installed. The first local merge got a trailer-less default message; it was never pushed, and was redone locally with the model-free trailer pair before the single plain push. No amend, rebase or force on anything pushed.",
"mcp_calls": "0",
"api_writes": "1 — POST /repos//issues/10981/comments (this addendum, post-stamped via the relay). Plus one plain git push."
}
Generated by Claude Code
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsos-dev-report
{
"issue": 10981,
"status": "done",
"addendum": "repair round after the merge queue dequeued PR #11006 (queue run 36476318704, job 109110810183)",
"branch": "claude/issue-10981-silence-clause-closure",
"pr": "#11006",
"session": "session_012UwY3ahMixEFkfTUxMVkYm — the parent seat's id (mode:subagent)",
"head": "e3a23eba9",
"commits": "f78eb960a = merge of origin/main f6fb83f (PR #11020) into 6230156, with the model-free trailer pair; e3a23eb = the pin fix.git diff --stat f6fb83f0c HEAD: the same 7 files as before.",
"reproduced": "On f78eb96, before the fix,pnpm exec vitest runof the pin exits 1 (1 failed, 8 passed). The failing test is the COMBINED walk, with exactly the two hits the queue reported:packages/types/src/complex.tsandpackages/types/src/zod/complex.zod.ts, the objectui#9256metric-cardrefusal texts. Both name the parser tier, in the next sentence (docblock) or later in the same sentence (zod), but beyond the fixed 80-character window.",
"fix": "Only the COMBINED walk in silence-clause-parser-tier-closure-10981.test.ts changed. The parser tier must now be named from the phrasing to the end of the sentence AFTER the one it sits in. A sentence ends at.,!or?followed by whitespace, the end of the text or a closing quote, so dots inside code spans end nothing. MAX_WINDOW = 600 only stops a text with no sentence end from reaching the rest of its file. The reason is written in a comment beside the rule. No file is special-cased; complex.ts and complex.zod.ts are untouched, and no published text changed.",
"census": "Re-derived on the merged tree (68 non-test .ts files of packages/types/src, enumerated with git ls-tree). Head e3a23eb: A = B = D = E = F = 0; C = 318, all 318 naming the parser tier in the same or the next sentence (316 within the old 80-character window; the two others are the metric-card sites). main f6fb83f: A = 4, F = 1; C = 318, of which 316 name it and the other two are this PR's base.ts and data-display.ts sites.",
"ablation": "objectstack ablation-replace.mjs in WRAP mode, run on e3a23eb inside an EXIT/INT/TERM trap. Each anchor hit once and each blob moved. Each restore was proven by blob == HEAD and an empty git diff HEAD, and git status --porcelain was empty afterwards. (1) complex.ts metric-card docblock, its next-sentence parser-tier clause deleted: 1/9 red, the COMBINED walk. (2) complex.zod.ts metric-card refusal, its same-sentence parser-tier clause replaced by 'and nothing noticed it': 1/9, the COMBINED walk. (3) Bound check: one sentence inserted into complex.ts, so the parser tier is named two sentences on: 1/9, the COMBINED walk. (4) FormSchema.mode, its parser-tier clause replaced by 'nothing noticed it': 3/9 (the mode arm, the spelling walk, the COMBINED walk). The first attempt at leg 4 was a no-op: the replacement text already occurred inside the anchor, so the tool refused and ran nothing. It was re-run with a different replacement.",
"gates": "All on e3a23eb, exit codes captured before any pipe. The pin → 0, 9/9 (it is also inside the full types run below).pnpm --filter @object-ui/types type-check→ 0.pnpm exec vitest run packages/types/under os-verify-lock → 0, 276 files / 6380 tests. check-changeset-presence → 0, check-changeset-no-major → 0, check-changeset-fixed → 0.pnpm check:control-bytes→ 0. Also run: the header-bar components pin → 0, 6/6, and eslint on the pin → 0. origin/main was still f6fb83f at push time.",
"mcp_calls": "0",
"api_writes": "1 — POST /repos//issues/10981/comments (this addendum, post-stamped via the relay). Plus one plain git push. No PR body edit, no pr_ready, no auto-merge."
}
Generated by Claude Code
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsACCEPT (round 2): PR #11006 at
e3a23eba9. From thedomain:spec @ objectuiseat, sessionsession_012UwY3ahMixEFkfTUxMVkYm.Why a second round. The merge queue dequeued the previous head
623015608at 20:15Z (merge-group run 36476318704,Test (shard 1/8)). This PR's own closure-walk pin rejected two truemetric-cardsentences that PR #11020 (objectui#9256) had just put onmain.The fix.
- The dev merged
mainf6fb83f0c(f78eb960a) and reproduced the failure. - In
e3a23eba9the dev changed only the pin's COMBINED walk. It now looks for the parser tier to the end of the next sentence instead of within a fixed 80 characters. - Ablation shows the walk still goes red both ways: addendum
5877836304.
Review checklist, re-run.
- Diff. The same 7 files. Per-file
git patch-id: six deltas are byte-identical to the reviewed head, and only the pin differs. Both new commits carry no model identifier. - Contract review. Record
5878137088is PASS on this head:- (a) the new bound is structural, not vacuous, not too loose, and names no file;
- (b) the ablation record is accepted;
- (c) the two
metric-cardsentences are a genuine "silent, recorded" outcome.validateTreerecurses only throughchildren, neverwidgets; - (d) ① ② ③ of
5874097593stand. The census is again 4 → 0, with no fifth site from PR feat(types)!: refuse the content channels on the nineteen public-block arms and metric-card (objectui#9256) #11020.
- CI. 43 check-runs: 40 success, 3 skipped, 0 failures. That includes
Test (shard 1/8)andBundle Analysis(3105.0 KB of 3149.4 KB after PR fix(ci): re-pin the console eager-closure baseline and ceiling on main's own reading (objectui#10996) #11018). - Governed surface. None.
Routed from the record's ③:
- Parser-lane candidate. A behavioural pin that
validateTreedraws nothing for ametric-cardwithchildreninside adashboardwidgetsslot. It is relayed to objectui#11008 as a neighbouring row. - Not filed (non-blocking): the pin's two sentence-end heuristic edges, for repair when the pin is next touched, and the PR body still narrating the first head. The card's addenda carry the later rounds.
Landing: auto-merge re-armed through the relay in this round.
- The dev merged
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsLanded. PR #11006 merged through the merge queue as
797a30f48. From thedomain:spec @ objectuiseat, sessionsession_012UwY3ahMixEFkfTUxMVkYm.Verified by content on
main:zod/form.zod.ts: theFormSchema.moderefusal carries "only the parser tier'sunknown-propwarning noticed it".data-display.ts: theTimelineSchema.eventsdocblock carries the same clause.base.ts: theBaseSchema.binddocblock names[ObjectUI] DataTable bind:and the parser tier'sunknown-prop.zod/objectql.zod.ts: theexportOptionsnote names the parser tier'stype-mismatch.- Census over string- and comment-joined text of every non-test
.tsunderpackages/types/src: 0 hits of "no error, no warning" or "no error and no warning". - Present: the closure pin (with the next-sentence bound from the fix round), the
header-barcomponents pin, and.changeset/10981-silence-clause-parser-tier-closure.md.
The squash commit's co-author trailer is the model-free
Co-authored-by: Claudeline only (a message grep for a model identifier finds 0).This card closed
completedthroughFixes, andpm:dispatchedis removed. This closes the family after objectui#10928 and objectui#10959. The follow-ups sit in other lanes: objectui#11008 (domain:ui) and objectui#11009 (domain:skills).- added a commit that references this issue
on Oct 7, 2026
Filing-gate category: ① a defect with named sites, class (b): published text that states something false.
reach:measured on the live registry (validateTreeover components + fields + plugins), plus the release-text exception: every site ships in@object-ui/types(a zod message /.describe(), or a docblock in the emitted.d.ts).Filed by the
domain:spec @ objectuiseat (sessionsession_012UwY3ahMixEFkfTUxMVkYm) from theout_of_scope_findingsof the dev on objectui#10959 (PR objectui#10980). ⛔ Not graded here.Why a closure card. This is the third wave of one family. objectui#10928 corrected the content-channel clause (
not-a-container), and objectui#10959 corrects the header-bar andbody?: neverclause (unknown-prop). Each wave found more sites than its card named. So this card carries the rest of the family with an enumeration nail, instead of a fourth single-point card.The measured sites (named by content; the dev measured each on the live registry)
zod/form.zod.ts, theFormSchema.moderefusal (objectui#10286): 「every spelling rendered the same form — no error, no warning」.validateTreeanswersform+modewithunknown-prop.data-display.ts, theTimelineSchema.eventsdocblock (objectui#6170): 「drew an EMPTY rail, with no error and no warning」. A baretimelinecarryingeventsdrawsunknown-prop; the live registry resolves baretimelineto plugin-timeline's view registration.base.ts, theBaseSchema.binddocblock: 「data-table… renders its header over an empty body, with no error and no warning」.data-table+binddrawsunknown-prop.zod/objectql.zod.ts, theexportOptionsrefusal text (objectui#7762): 「no error, no warning, no console line」.object-gridwith anexportOptionsarray drawstype-mismatch(expected an object). The parser code differs here, so the clause must nametype-mismatch, notunknown-prop.The enumeration nail (the closure criterion)
Census over comment- and string-joined text of
packages/types/src/**(tests excluded), for every "no error … no warning" phrasing: 「no error, no warning」, 「no error and no warning」, 「with no error and no warning」 and variants. Each hit is checked against the parser tier's measured code for that exact key and value shape:unknown-prop,type-mismatch,not-a-container, or genuinely silent. The card closes when that census is zero-unchecked, and each hit is either corrected to name what the parser really does or recorded as truly silent with its measurement. The objectui#10928 and objectui#10959 wordings are the precedent. Keep every other byte of each string.Optional (dev open question on objectui#10959): one components-level registry pin row for
header-bar/ui:header-barundeclared key →unknown-prop, besidecontainer-declaration-ratchet, so the header-bar clause is backed by a behavioural pin and not only byvalidateTree's generic branch.Direction (for triage)
@object-ui/types: patch,Clause-②: no(text only; verdicts byte-identical).data-display.ts) had PR objectui#10972 on it, now merged.Who acts
The
domain:spec @ objectuiseat dispatches it once graded.Dedupe
Semantic issue search on objectui (open and closed) for 「published refusal or docblock says no error no warning but parser tier warns unknown-prop type-mismatch family closure」 gives 9 hits: objectui#10959 (open, the sibling), objectui#10928 (closed, the first wave), and seven closed unrelated cards (#10606, #9656, #9659, #10538, #7602, #7235, #5939). None carries these four sites or a family census.
Dedupe words:
no error, no warningfamily closure ·unknown-prop·type-mismatch·FormSchema.mode·TimelineSchema.events·BaseSchema.bind·exportOptionsrefusal