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
Two launch-wizard steps ask nothing useful: 「首个版本」 is an empty page for a type with no template, and 「提交合同」 is a lone checkbox whose button says 提交 either way #162
Filing class: ① user-visible defect (two items on one wizard) — reach: public door, measured in a browser on main (18.1.0, pnpm demo:zh), code read on main21f2319. Reader: the hotclm lane.
「提交合同」 step. One field, 立即提交, a boolean that starts unticked (:442-447), and the button reads 提交 whether it is ticked or not. Unticked + 提交 keeps a draft; ticked + 提交 sends it to legal. A requester who leaves it unticked and presses 提交 has every reason to think the contract went out.
Fix
Route around screen_document when the type has no template: decision_document_screen (:334, edges e29 / e30) already branches; add the templateAvailable test so an interactive run without a template goes straight to create_contract.
Make the choice explicit: a required select 「提交方式」 with two options, 「现在提交给法务 / 审批」 and 「先保存为草稿」, and no default. Then the footer button's wording no longer decides the meaning. The platform side, a button that reads 下一步 / a declared label, is filed separately on objectstack.
Dedupe: hotclm issues (all states) grepped for screen_document, submit_now, 立即提交, empty step — #99 item 2 / #123 (the toggle, done); none covers the empty page or the submit choice.
Route: app-side, two items on the launch wizard. (1) Skip the empty 「首个版本」 step when the type has no template. (2) Make the submit choice explicit. It shares contract-intake.flow.ts with #156 and #161, so it is serialized after #156. The 「提交方式」 wording is reviewed on the PR.
Claim: PM loop round 17
Ruling-ref: none (triaged defect, comment 6439182325)
Session: session_017nzWFRUo2U7evMkPdVniAn
Account: zhuangjianguo (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-99-launch-wizard
Worktree: hotclm-issue-99
Domain: repo:hotclm (single-lane sister repo — no domain:*)
Seat: repo:hotclm#1
File surface: src/flows/contract-intake.flow.ts (F1 launch wizard) · src/actions/contract-lifecycle.actions.ts (start_renewal navigation only) · src/actions/contract.actions.ts (the launch action, only if the wizard's inputs change) · flow and action translations; stop on breach; explain in the report
Container & model: S, mode:subagent, model: opus (TIER_DEFAULT; hand-derived for a sister repo), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: this app's launch wizard and renewal hand-off (what a requester is asked, and where they land) | objectstack-ai/objectstack#25800 and #25801 shipped in 18.2.0 | every requester who launches or renews a contract
Thread-read: 6439182325
Premise: re-measured by the dev on origin/main475106f (@objectstack 18.2.0) with the declared demo staff
Serial constraints cleared: #156 landed (PR #170, flows) and #169 landed (PR #173, lifecycle actions). In flight: #43 (executed-upload, backfill action), #160 (notify nodes in other flows), #41 (data); all on disjoint files. Bundled with #99 items 3–4 and #161 on contract-intake.flow.ts, one dev and one PR.
Release: the 首个版本 step always asks for something, and 「提交方式」 must be chosen, so nobody saves a draft by not ticking a box. State: pm:dispatched removed, assignee cleared.
Activity
objectstack-fleet commentedon Oct 27, 2026
Platform half of item 2 (every non-final screen button reads 提交, a toast after each step): objectstack-ai/objectstack#26578. Date / boolean widgets on the same wizard: objectstack-ai/objectstack#26579.
objectstack-fleet commentedon Oct 27, 2026
Triage — 2026-10-27
User-visible defect, read against
main: accepted.Route: app-side, two items on the launch wizard. (1) Skip the empty 「首个版本」 step when the type has no template. (2) Make the submit choice explicit. It shares
contract-intake.flow.tswith #156 and #161, so it is serialized after #156. The 「提交方式」 wording is reviewed on the PR.State: →
pm:queue+bug.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 17
Ruling-ref: none (triaged defect, comment 6439182325)
Session:
session_017nzWFRUo2U7evMkPdVniAnAccount:
zhuangjianguo(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-99-launch-wizardWorktree:
hotclm-issue-99Domain:
repo:hotclm(single-lane sister repo — nodomain:*)Seat:
repo:hotclm#1File surface:
src/flows/contract-intake.flow.ts(F1 launch wizard) ·src/actions/contract-lifecycle.actions.ts(start_renewalnavigation only) ·src/actions/contract.actions.ts(the launch action, only if the wizard's inputs change) · flow and action translations; stop on breach; explain in the reportContainer & model:
S,mode:subagent,model: opus(TIER_DEFAULT; hand-derived for a sister repo),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
this app's launch wizard and renewal hand-off (what a requester is asked, and where they land) | objectstack-ai/objectstack#25800 and #25801 shipped in 18.2.0 | every requester who launches or renews a contractThread-read: 6439182325
Premise: re-measured by the dev on
origin/main475106f(@objectstack 18.2.0) with the declared demo staffSerial constraints cleared: #156 landed (PR #170, flows) and #169 landed (PR #173, lifecycle actions). In flight: #43 (executed-upload, backfill action), #160 (notify nodes in other flows), #41 (data); all on disjoint files. Bundled with #99 items 3–4 and #161 on
contract-intake.flow.ts, one dev and one PR.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Ruling-ref: none (triaged defect)
Landed — PR #180 · 2026-10-27
MERGED(squash onmain), merged at its ACCEPT headbdabe1e;Fixes #162closes this cardRelease: the 首个版本 step always asks for something, and 「提交方式」 must be chosen, so nobody saves a draft by not ticking a box. State:
pm:dispatchedremoved, assignee cleared.Generated by Claude Code