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.
Wizard view v1 — objectui alignment + pins for the ruled tightening (Card R, follows objectstack Card S) #6985
Card R of the objectstack#13342 chain, filed by the domain:spec seat (session_01PBjwYLS6BciTQW3c9xQiD2) per the maintainer ruling of 2026-08-31 on objectstack#13622 (director batch #12, verbatim 「同意」). Contract-first: this card dispatches ONLY after Card S lands — never co-batched with it.
Scope (re-price at dispatch against the tree — the proposal already measured the renderer as largely landed)
Align objectui's own declarations/mirrors with the ruled type:'wizard' tightening where they restate the form-view family (measure first: the proposal found WizardForm, the leave-step validation gate, and the progress model already implemented — the expected residue is alignment + pins, not new rendering).
Pin the ruled semantics from the consumer side: the wizard-inert step keys refused at the spec door are not silently consumed by WizardForm; empty-sections refusal; allowSkip = navigation freedom not validation exemption; array order = step order.
⚠️ Installability gate (standing lane rule): any test asserting the INSTALLED @objectstack/spec refuses the tightened shapes waits for a spec release carrying Card S — keep such assertions off the local suite or gate them on the installed version, and say which in the PR.
{
"issue": 6985,
"status": "done",
"branch": "claude/issue-6985-wizard-objectui-alignment",
"pr": "https://github.com/objectstack-ai/objectui/pull/7042",
"premise_still_valid": true,
"summary": "Premise verified: Card S is on objectstack origin/main (commit 4bc18e54, wizard refusal anchors grep-confirmed in view.zod.ts). Re-priced measurement at objectui main 7fc5c3c — already landed and only cited: WizardForm gate/progress/final full-set re-validation; D4 allowSkip semantics implemented AND pinned since 2959 (wizardSkipValidation.test.tsx); WizardStepConfig independent 7-key type with compile-time + family pins (6237/PR 6903); the visibleWhen drop-and-warn route (kept per the ruled disposition, wording untouched); type mirrors need NO accept-set change (form-spec.ts is spec-DERIVED; the ruled refusal is a runtime refinement invisible at type level). Residue landed in PR 7042: (1) metadata-admin view create emitted sections: [] for wizard — exactly the D7-refused shape; now seeds one starter step for wizard only, pinned with a tabbed boundary control; (2) TSDoc alignment in @object-ui/types (ObjectFormSection visibleWhen/collapsible/collapsed wizard boundary + spec-door refusal; sections ARE steps, array order is step order; allowSkip D4 wording); (3) consumer-side behaviour pins wizardRuledSemantics-6985.test.tsx (inert keys dropped never honoured, with affordance positive control; empty/absent-sections degradation to simple pinned as the door-refused shape; one-step wizard legal; array order with reversed-array control); (4) installed-spec door pins wizardSpecDoor-6985.test.ts, capability-gated (choice stated in the PR: behaviour probe, not version string) — post-Card-S half self-activates on the lockfile bump, pre-Card-S half records the 17.2.x accept-set today, steps-key refusal unconditional; (5) comment alignment in ObjectForm/sectionPredicateDiagnostic/WizardStepConfig docblocks. Installability gate honoured: no lockfile bump, no workspace link; the gated half was forward-executed against the real tightened spec build (17/17 PASS) so its activation is proven, not bet. Clause-② on actuals: NO accept-set narrowing in this repo (pre-read yes did not survive measurement — the wizard-specific type already refused these keys and there is no objectui zod door for form views); parked draft + needs:contract-review on both carriers per dispatch regardless. No teaching material; fences stand.",
"tests": "All heavy runs via os-verify-lock, verdicts quoted from the gate. At head 397a40c: 7-file targeted union (both new pin files + sectionPredicateLayoutDiagnostic-6237 + tabbedFormSectionPredicate-6237 + wizardSkipValidation + WizardForm.regression + view-create-body) = 59 passed, 8 skipped (the gated post-Card-S half, off by design on installed spec 17.2.0), VERDICT command-exit 0. Whole plugin-form package: 80 files, 813 passed, 8 skipped, VERDICT command-exit 0. types package + all anchors-importing app-shell suites + createBody/clientValidation/viewItemSpec: 90 files, 1113 passed, VERDICT command-exit 0. turbo type-check for types+plugin-form+app-shell (deps built first; tsconfig.test.json include globs match the new test files — checked): 32 tasks successful, exit 0. turbo lint for the three packages: exit 0 (narrowing declared in PR: per-package eslint cannot move untouched packages). check-changeset-presence: 6 source files, 3 released packages, 1 changeset declared. check-changeset-no-major green; check:control-bytes/phantom-deps/self-import/vi-mock-specifiers green with their own verdict lines. Forward verification (the ablation-shaped leg): built @objectstack/spec in a detached objectstack worktree at origin/main containing Card S (build via lock, VERDICT command-exit 0; dist hash line printed by the build), then executed a 1:1 replication of the gated assertions against that build: 17/17 PASS including the regime flip (pre-half acceptance rows red there). Predicted-red leg for the anchors fix: the OLD sections-empty wizard ViewItem is refused at config.sections by the tightened ViewItemSchema (observed), the NEW seeded body parses on BOTH spec lines, tabbed empty stays accepted. No source mutation was involved in either leg (fixture-level red/green against a hash-verified fresh build), so no restore leg was owed.",
"mcp_calls": "9 — PR create, PR body full read-back, issue 6985 labels read + union write + read-back, PR 7042 label read attempt (loud GraphQL failure, routed to payload read-back) + write, this report comment, plus one final label re-check",
"open_questions": [],
"out_of_scope_findings": []
}
REST channel note: this session's repo-scoped REST is gated (403 on probe), so label writes went the MCP read-union-write route with payload-channel read-backs; the PR-side label was confirmed present via the PR page data-name read alongside the auto labels (nothing stripped).
Activity
os-warren commentedon Aug 31, 2026
Claim: session_01PBjwYLS6BciTQW3c9xQiD2 · branch
claude/issue-6985-wizard-objectui-alignment· seat domain:spec (os-warren)解锁依据:
Blocked-by: objectstack-ai/objectstack#13704已兑现(Card S → PR objectstack#13733 MERGED 13:27Z,维护者词放行)。pm:blocked → pm:dispatched 同笔。Clause-②: 按实际 diff 申报,预判 yes(objectui 镜像若复述 wizard 收紧 = 本仓契约面接受集收窄)⇒ fable 派发;PR 创建时 draft +
needs:contract-review双载体停靠,放行走席内 contract review(objectstack#13795 新流程)。范围按卡体:re-price at dispatch(提案已测渲染器大体落地,预期残差 = 对齐 + pins);installability 门是硬的——断言 INSTALLED
@objectstack/spec拒绝收紧形状的测试必须门在已装版本上(lockfile 17.2.0 不带 Card S),PR 里写清取舍;⛔ 无教材(#13337/#13086 围栏两半落地后才解)。Generated by Claude Code
os-warren commentedon Aug 31, 2026
os-dev-report
{ "issue": 6985, "status": "done", "branch": "claude/issue-6985-wizard-objectui-alignment", "pr": "https://github.com/objectstack-ai/objectui/pull/7042", "premise_still_valid": true, "summary": "Premise verified: Card S is on objectstack origin/main (commit 4bc18e54, wizard refusal anchors grep-confirmed in view.zod.ts). Re-priced measurement at objectui main 7fc5c3c — already landed and only cited: WizardForm gate/progress/final full-set re-validation; D4 allowSkip semantics implemented AND pinned since 2959 (wizardSkipValidation.test.tsx); WizardStepConfig independent 7-key type with compile-time + family pins (6237/PR 6903); the visibleWhen drop-and-warn route (kept per the ruled disposition, wording untouched); type mirrors need NO accept-set change (form-spec.ts is spec-DERIVED; the ruled refusal is a runtime refinement invisible at type level). Residue landed in PR 7042: (1) metadata-admin view create emitted sections: [] for wizard — exactly the D7-refused shape; now seeds one starter step for wizard only, pinned with a tabbed boundary control; (2) TSDoc alignment in @object-ui/types (ObjectFormSection visibleWhen/collapsible/collapsed wizard boundary + spec-door refusal; sections ARE steps, array order is step order; allowSkip D4 wording); (3) consumer-side behaviour pins wizardRuledSemantics-6985.test.tsx (inert keys dropped never honoured, with affordance positive control; empty/absent-sections degradation to simple pinned as the door-refused shape; one-step wizard legal; array order with reversed-array control); (4) installed-spec door pins wizardSpecDoor-6985.test.ts, capability-gated (choice stated in the PR: behaviour probe, not version string) — post-Card-S half self-activates on the lockfile bump, pre-Card-S half records the 17.2.x accept-set today, steps-key refusal unconditional; (5) comment alignment in ObjectForm/sectionPredicateDiagnostic/WizardStepConfig docblocks. Installability gate honoured: no lockfile bump, no workspace link; the gated half was forward-executed against the real tightened spec build (17/17 PASS) so its activation is proven, not bet. Clause-② on actuals: NO accept-set narrowing in this repo (pre-read yes did not survive measurement — the wizard-specific type already refused these keys and there is no objectui zod door for form views); parked draft + needs:contract-review on both carriers per dispatch regardless. No teaching material; fences stand.", "tests": "All heavy runs via os-verify-lock, verdicts quoted from the gate. At head 397a40c: 7-file targeted union (both new pin files + sectionPredicateLayoutDiagnostic-6237 + tabbedFormSectionPredicate-6237 + wizardSkipValidation + WizardForm.regression + view-create-body) = 59 passed, 8 skipped (the gated post-Card-S half, off by design on installed spec 17.2.0), VERDICT command-exit 0. Whole plugin-form package: 80 files, 813 passed, 8 skipped, VERDICT command-exit 0. types package + all anchors-importing app-shell suites + createBody/clientValidation/viewItemSpec: 90 files, 1113 passed, VERDICT command-exit 0. turbo type-check for types+plugin-form+app-shell (deps built first; tsconfig.test.json include globs match the new test files — checked): 32 tasks successful, exit 0. turbo lint for the three packages: exit 0 (narrowing declared in PR: per-package eslint cannot move untouched packages). check-changeset-presence: 6 source files, 3 released packages, 1 changeset declared. check-changeset-no-major green; check:control-bytes/phantom-deps/self-import/vi-mock-specifiers green with their own verdict lines. Forward verification (the ablation-shaped leg): built @objectstack/spec in a detached objectstack worktree at origin/main containing Card S (build via lock, VERDICT command-exit 0; dist hash line printed by the build), then executed a 1:1 replication of the gated assertions against that build: 17/17 PASS including the regime flip (pre-half acceptance rows red there). Predicted-red leg for the anchors fix: the OLD sections-empty wizard ViewItem is refused at config.sections by the tightened ViewItemSchema (observed), the NEW seeded body parses on BOTH spec lines, tabbed empty stays accepted. No source mutation was involved in either leg (fixture-level red/green against a hash-verified fresh build), so no restore leg was owed.", "mcp_calls": "9 — PR create, PR body full read-back, issue 6985 labels read + union write + read-back, PR 7042 label read attempt (loud GraphQL failure, routed to payload read-back) + write, this report comment, plus one final label re-check", "open_questions": [], "out_of_scope_findings": [] }REST channel note: this session's repo-scoped REST is gated (403 on probe), so label writes went the MCP read-union-write route with payload-channel read-backs; the PR-side label was confirmed present via the PR page data-name read alongside the auto labels (nothing stripped).
Generated by Claude Code
Generated by Claude Code
os-warren commentedon Aug 31, 2026
席内 contract review:PASS — PR #7042(head
397a40c),依 objectstack#13795 流程。契约判断清单:
ModalFormcontentLayout: 'tabbed') cannot carry a sectionvisibleWhenat all —FormFieldTabdeclares no predicate slot #6237/[console 17.0.0-rc.0 @4a4829d0] Tabbed create/edit modal still loses non-active-tab values (#2153 closed but explicit-sections path unfixed) — Radix unmount destroys per-tab form state #2959 先例落地,真残差被挖出:metadata-admin view create 给 wizard 发射sections: []= 恰好 D7 拒绝形状,修为 wizard 独有的一步种子(Flow createDefaults missing type field — save may fail server validation if type not explicitly selected #2326 flow anchor 同型),tabbed 边界对照 pin ✓;(b) installability 门的 capability-probe 实现优于版本串门控——探安装态 FormViewSchema 行为选半区,post-Card-S 半区 lockfile bump 自激活,且已对真收紧 build 前向执行 17/17 证明激活性(不是赌)✓;(c) TSDoc 对齐零形状变化(D2 option A 的类型层镜像本就单一 section schema)✓;(d) drop-and-warn 保留的理由正确(spec 门够不到 programmatic SDUI 与先于收紧的存量)✓。放行:剥
needs:contract-review(双载体)→ ready → auto-merge;MERGED 后双卡链(#13342 协调节点)两半齐,Card S+R 完成。Generated by Claude Code