feat(spec,cli): enroll view in the liveness ledger (#2998 Track B)#3046
Merged
Conversation
Adds 'view' to the GOVERNED set of the spec property-liveness gate and authors packages/spec/liveness/view.json — closing the rollout gap that let the objectui#1763/#2545 renderer/spec key-drift class survive undetected (the systemic cause named in #2998). - view.json classifies all 83 walkable properties: `list`/`form` drilled one level via children; `listViews`/`formViews` covered at top level (same inner shapes as list/form). Tally: 76 live, 2 experimental (form.buttons/form.defaults — #2998 Track A awaiting objectui#2545), 5 dead (list.responsive, list.performance, form.data, form.defaultSort, form.aria), misleading dead props authorWarn'd with corrective hints. - Seeded from docs/audits/2026-06-viewschema-property-liveness.md and re-verified against objectui HEAD (fb35e48): four audit-era DEAD findings had since gone live and are classified from current reads — form.submitBehavior, list.sharing.lockedBy, list-path ViewData providers, and the post-ADR-0021 list.chart dataset shape (the audit's "chart renderers never migrated" headline is resolved; the legacy-key reads are only the back-compat fallback). - CLI compile-time liveness lint gains view coverage: TYPE_COLLECTIONS maps the stack `views` collection, containers labelled by `object` (views have no `name`). +3 tests (17/17 green). - liveness/README.md: 13 governed types, view row, form-surface proof class note updated; minor changeset for @objectstack/spec + cli. Verification: check:liveness green (0 UNCLASSIFIED, no new stale-evidence warnings); lint-liveness-properties tests 17/17. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013Ue47V8zZ5QhcYMPiRQDA7
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 2 package(s): 104 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
实现 #2998 的 Track B:把
view纳入 spec 属性活性台账的GOVERNED名单 —— 补上让 objectui#1763/#2545 这类 renderer/spec 键漂移长期漏检的系统性缺口(Track A 已由 #3014 落地)。变更内容
view入册:check-liveness.mts的GOVERNED增加'view';新建packages/spec/liveness/view.json,83 个可遍历属性全部分类 ——list/form容器按children下钻一层,listViews/formViews(与 list/form 同构的命名视图 record)在顶层整体分类。结果:live 76 / experimental 2 / dead 5,gate 全绿零 UNCLASSIFIED。form.submitBehavior(WizardForm.tsx:315+ 专项测试);list.sharing.lockedBy(ListView 分享 tooltip);ViewDataproviders(ListView.tsx:841拉取效应支持 value/api 模式);list.chart—— 审计的头号发现("chart 渲染器从未迁移到 ADR-0021 形状")已被解决:ListView.tsx:1460/ObjectView.tsx:1185均为 dataset-first 分支,ObjectChart.tsx:298-325拉取 dataset 定义走语义层查询,legacy 键读取只是向后兼容回退。list.responsive、list.performance、form.data、form.defaultSort、form.aria—— 除form.aria(良性 a11y 元数据,按 README 规则不打扰作者)外全部标注authorWarn+authorHint。二级残留(userActions.buttons、addRecord.mode/formView、tabs[].order,下钻仅一层无法单列)记录在父条目 note 中,进入 enforce-or-remove 工作清单(ADR-0049)。form.buttons/form.defaults—— spec: structured form button/defaults config on FormViewSchema + enrollviewin the liveness ledger #2998 Track A(feat(spec): structured buttons + defaults config on FormViewSchema (#2998) #3014)的新键,显式入账并链接 objectui#2545 的接线待办,marker 与台账状态一致。lint-liveness-properties.ts):TYPE_COLLECTIONS增加{ type: 'view', key: 'views' },视图容器以object作为警告标签(视图容器没有name)。现在os build一个含 dead 属性的视图(如设置了form.defaultSort)会收到带修正提示的 advisory 警告 —— 否则台账里的authorWarn本身就是 parsed-but-inert(ADR-0078 的讽刺)。新增 3 个测试,17/17 通过。验证
pnpm --filter @objectstack/spec check:liveness全绿:view 83 classified (live 76, dead 5, experimental 2),0 UNCLASSIFIED,未新增 stale-evidence 警告,exit 0。lint-liveness-properties测试 17/17(含 3 个新 view 用例:dead 属性告警、live 属性静默、干净视图零发现)。pnpm test后台运行中,绿后如有问题会跟进(范围内测试均已通过)。遗留
userActions.buttons等)与form.aria的接线/裁剪决策 → enforce-or-remove 清单,建议随 objectui#2545 一并处置。Grounding: ADR-0049(enforce-or-remove)、ADR-0054(prove-it-runs)、ADR-0078。Refs #2998(Track B;Track A 已由 #3014 合并)、objectstack-ai/objectui#2545、objectstack-ai/objectui#1763。
🤖 Generated with Claude Code
https://claude.ai/code/session_013Ue47V8zZ5QhcYMPiRQDA7
Generated by Claude Code