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 }}
Repository navigation
[finding] form-view.ts spec bridge also reads spec.defaultSort — the same dormant-read shape as #3901, on the sibling key #3901's scope explicitly excluded #3974
Observation-class finding from the axis-③ liveness audit (ledger claims vs measured objectui readers). Nothing breaks today — filed so it is recorded rather than rediscovered, unassigned for triage. #3901 covers the spec.aria read at :193 and states under "Not in scope": "Other spec.* reads in this bridge; only aria was measured." This card is that measurement for the sibling key. Ledger verdict vs measured reader disagree — not prescribing which side is right (same delete-vs-document fork, and the same unmeasured non-validated-input precondition, as #3901).
"REMOVED 2026-07-30 (#3896 close-out sweep) — tombstoned at the schema (retiredKey carries the prescription; authoring it is a tsc error and a parse error) and stripped from sources by the protocol-17 close-out conversion. … a related list sorts by its own list view's sort."
Same dormancy analysis as #3901: retiredKey() rejects at parse, so spec.defaultSort is always undefined for any validated FormView and the guard is unreachable — unless some path feeds the bridge a non-validated object (stored pre-17 documents, fixtures), which was not measured here either.
One difference from the aria sibling
Downstream is also empty as far as measured: no object-form renderer consumer of node.defaultSort was found (plugin-view/src/ObjectView.tsx:848 and plugin-grid/src/ObjectGrid.tsx:637 read defaultSort on the table/grid schema surface, not the form node; plugin-detail/src/RelatedList.tsx takes it as a component prop). So the bridge line copies a parse-rejected key onto a node key nothing reads — dormant at both ends.
Org-wide open-issue search for defaultSort: only objectstack#7118 (related_list.filter, unrelated key/surface).
Suggested direction (non-binding)
Whatever disposition #3901 gets after its promotion gate ("measure the non-validated-input paths") almost certainly applies verbatim here; cheapest is to handle both lines in the same card/PR.
Suggested lane: same as #3901 (spec-bridge hygiene, objectui react package).
Finding-triage ruling: Hold (why still held): verbatim sibling of #3901 — spec.defaultSort at form-view.ts:188 beside #3901's spec.aria at :193, the same dormant-read shape — cheapest resolved together. Restart: #3901's recorded promotion gate (measure non-validated-input paths), then one XS card deletes both lines.
Authorization: maintainer directive (this session) —「对于issue中的findings 执行一次集中分诊,并更新issue 的状态。」Centralized pass under that directive; finding grading is normally the triage seat's single channel. Round: objectstack#4949 finding-triage, 2026-08-10.
Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Findings triage (re-verify @ origin/mainda81093): HOLD — form-view.ts:188 still reads spec.defaultSort while the objectstack ledger row says the key is tombstoned; the delete-vs-document fork and the unmeasured non-validated-input precondition are the same as sibling #3901, so the two should be graded together. finding stands.
Findings cadence (triage seat): HOLD — re-verified on origin/main @ e1ade8f: the bridge still reads spec.defaultSort (packages/react/src/spec-bridge/bridges/form-view.ts:188) with the local mirror declaring it (:81), while objectstack's ledger row says dead. Ledger-vs-measured-reader fork unresolved; grade together with ui#3901 (same file, same shape) — one ruling decides both.
Maintainer ruling — 2026-08-11. From the four-lens decision review (platform long-term coherence / measured business pull / AI-agent error-resistance / startup scope discipline); the maintainer accepted the recommendation set in full.
Ruling: enforce-or-remove. Same ruling as pair card objectui#3901, applied to spec.defaultSort: verify the ledger's dead verdict producer-side, then remove the bridge read at form-view.ts:188 and the FormViewSpec mirror at :81. One PR, both keys, Fixes both cards. State: finding → pm:queue.
Recorded by the triage seat Routine (#5474 pilot) on the maintainer's direct instruction — ruling record, not a claim.
Activity
os-zhuang commentedon Aug 10, 2026
Finding-triage ruling: Hold (why still held): verbatim sibling of #3901 — spec.defaultSort at form-view.ts:188 beside #3901's spec.aria at :193, the same dormant-read shape — cheapest resolved together. Restart: #3901's recorded promotion gate (measure non-validated-input paths), then one XS card deletes both lines.
Authorization: maintainer directive (this session) —「对于issue中的findings 执行一次集中分诊,并更新issue 的状态。」Centralized pass under that directive; finding grading is normally the triage seat's single channel. Round: objectstack#4949 finding-triage, 2026-08-10.
Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Generated by Claude Code
claude commentedon Aug 10, 2026
Findings triage (re-verify @
origin/mainda81093): HOLD —form-view.ts:188still readsspec.defaultSortwhile the objectstack ledger row says the key is tombstoned; the delete-vs-document fork and the unmeasured non-validated-input precondition are the same as sibling #3901, so the two should be graded together.findingstands.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
claude commentedon Aug 11, 2026
Findings cadence (triage seat): HOLD — re-verified on
origin/main@e1ade8f: the bridge still readsspec.defaultSort(packages/react/src/spec-bridge/bridges/form-view.ts:188) with the local mirror declaring it (:81), while objectstack's ledger row saysdead. Ledger-vs-measured-reader fork unresolved; grade together with ui#3901 (same file, same shape) — one ruling decides both.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
claude commentedon Aug 11, 2026
Maintainer ruling — 2026-08-11. From the four-lens decision review (platform long-term coherence / measured business pull / AI-agent error-resistance / startup scope discipline); the maintainer accepted the recommendation set in full.
Ruling: enforce-or-remove. Same ruling as pair card objectui#3901, applied to
spec.defaultSort: verify the ledger'sdeadverdict producer-side, then remove the bridge read atform-view.ts:188and theFormViewSpecmirror at:81. One PR, both keys,Fixesboth cards. State:finding→pm:queue.Recorded by the triage seat Routine (#5474 pilot) on the maintainer's direct instruction — ruling record, not a claim.
Generated by Claude Code
yinlianghui commentedon Aug 16, 2026
【认领】objectui 分片 PM(session_01GTRjn8xBqp75dk7kFupVRt)批次 11 派发,与 #3901 一 PR 双关(维护者 2026-08-11 裁定),分支与执行序见 #3901 认领评论。
Generated by Claude Code
fix(react): drop form-view bridge reads of spec-retired defaultSort/a…
fix(react): the form-view bridge accepts what the contract accepts (o…
fix(react): the form-view bridge accepts what the contract accepts (o…