Repository navigation
docs(automation): retire the workflow-rules section in all three locales (#833) - #854
Merged
Merged
Conversation
…les (#833) The automation admin page taught workflow rules as one of five kinds of automation — action types, three "built-in examples", a step in the save order, and a Setup -> Workflow Queue to monitor them. The type does not exist, and not only in this app: measured on @objectstack/* 17.0.0-rc.2, there are zero WorkflowRule symbols across all 50 installed platform packages, spec declares the metadata type, the stack collection, the authoring paradigm, the REST mount and the core-service slot all retired (ADR-0019 / ADR-0020 / #4451), the Setup Automation nav ships Flows and nothing else, and a running server's /api/v1 discovery lists no workflow route or service slot while its automation service returns flows alone. The three "built-in examples" were flows all along — the New Lead Routing & SLA, Large Deal Won Alert and Case Escalation Process rows of the flow table on the same page — so one behaviour was credited to two mechanisms, only one of which an admin can find in Setup. They also described things the flows never did (the #wins Slack post comes from a flow whose only node is a notify), so they are dropped rather than reworded. "The five kinds" is now four; the Flows section opens with a note for readers arriving with "workflow rule" in mind; the save order loses its workflow step and states the engine's real cascade behaviour (a re-entrancy guard, not "up to 5 times"); the Workflow Queue monitoring entry is gone. #839's flow table and prose are untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 6, 2026 00:00
This was referenced Aug 6, 2026
Closed
Closed
yinlianghui
added a commit
to yinlianghui/hotcrm
that referenced
this pull request
Aug 10, 2026
…, no schedule to adjust on the quote object (objectstack-ai#899) (objectstack-ai#916) objectstack-ai#850 / PR objectstack-ai#894 swept the string "workflow rule". This sweeps the other one: `workflows` without "rule", written as a kind of thing distinct from flows. Seven page families x 3 locales; the grep surfaces do not overlap. A. The "re-evaluates up to 5 times, then the cascade stops" claim was ruled fictional in PR objectstack-ai#854 and rewritten on the automation page; two copies were left behind, so the docs contradicted themselves. `reference/faq`'s "my flow didn't fire" checklist and `reference/performance-and-limits`' automation limits row now state the engine's behaviour: a flow's own writes are ordinary saves that re-enter the trigger order, and a re-entrancy guard breaks self-trigger loops — a backstop, not a counter to plan capacity against. B. `sales/quotes` told admins to adjust the sweep schedule "on the quote object's workflow". No such setting exists; the schedule is the start node's `schedule: '0 1 * * *'` in `src/flows/quote-expiration.flow.ts`, which the page now says plainly — an authoring surface in source, not a Setup screen. The neighbouring suggestion to "add a workflow" becomes a record-change flow. C. Four enumerations listed `workflows` alongside flows as a second deployable or auditable kind (`administration/index`, `administration/sandbox-and- releases` x2, `reference/security-and-compliance`, `customization/index`). Everyday-sense uses of the word are untouched, as are PR objectstack-ai#894's named-retirement notes in `reference/glossary` and `performance-and-limits:20`. Docs only, no `src/**` change. Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa Co-authored-by: Claude <noreply@anthropic.com>
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.
Fixes #833
分支裁定:走 (b),整节退休
PM 预授权了两条分支,以实测定。测量结果是 (b) —— 平台侧已无此能力面,不是「平台有、本仓未用」,因此该节整体退休,而不是按 #755 的 not-shipped 风格改写成「平台能力、本应用未使用」。
#800 的教训是把「本仓没有」写成「平台没有」。本 PR 的写法反过来受同一条约束:结论确实是「平台没有」,所以证据必须能独立支撑这个更强的判断,而不是从本仓的 author 面推出来。下面是那份证据。
第一步:平台测量(先于任何编辑)
依赖
@objectstack/*17.0.0-rc.2,50 个包全部已装。1. 符号面(带反空跑对照)
WorkflowRuleFlowSchemaApprovalNodeStateMachineSchemaJobSchema对照列的意义是:同一条 grep 会找到真实存在的东西。零命中是结论,不是探针失灵。
2. spec 自己交代了五处退休
kernel/metadata-plugin.zod.ts——ADR-0020: there is no 'workflow' metadata type(元数据类型清单与类型描述符表各一处)stack.zod.ts——ADR-0020: there is no top-level 'workflows' collectionautomation/node-executor.zod.ts——'workflow_rule' retired (ADR-0018 M5 dropped; see ADR-0019),授权范式只剩flow/approvalapi/protocol.zod.ts/api/router.zod.ts/api/discovery.zod.ts/api/plugin-rest-api.zod.ts——/api/v1/workflow挂载与WorkflowProtocol在 v17 移除,注释原话no workflow surface ever existedsystem/core-services.zod.ts——workflow(Workflow State Machine Engine)核心服务槽位随之退休另外
data/object.zod.ts现在把workflows/workflow收进了具名拒绝建议表:今天在对象上写这两个键,拿到的是一条点名的报错。3. Setup 导航(平台自己的 UI 面)
@objectstack/platform-objects里group_automation分组只有一个子项,后面跟着一条注释:即:管理员按旧文档去 Setup 找工作流规则,看到的只有 Flows。
4. 真实起服务实测(build 后起,防旧 artifact)
pnpm build后objectstack start -p 4833,实测:/api/v1discovery 列出 15 个服务槽 ——metadata, data, analytics, auth, automation, cache, queue, job, ui, realtime, notification, ai, i18n, file-storage, search。没有workflow。这一条尤其有分量:realtime/ai/search这些「存在但本部署不可用」的槽是被列出来的(带status: unavailable和安装提示),所以缺席本身就是答案,而不是「装少了插件」。GET /api/v1/workflow→ 404;/api/v1/workflows、/api/v1/metadata/workflow同为 404。GET /api/v1/automation→{"success":true,"data":{"flows":[…24 条…],"total":24}}—— 只有 flows,没有第二个集合。dist/objectstack.json顶层键无workflows;全文 16 处workflow子串全部无关(视图名case_workflow、种子数据散文等)。Workflow Queue在整个平台包树 0 命中 —— 文档里那条「设置 → 工作流队列」指向的页不存在。服务用记录到的 PID 关停(监听子进程 27929 按端口反查,未用进程名匹配),端口已确认关闭。
三条「内置示例」的实况
逐节点读编译产物,确认它们就是表里的三条 flow,且描述本身也不准:
lead_assignment/ New Lead Routing & SLAnext_followup_date,notify 收件人是{record.owner_id}。没有经理邮件,也没有建任务#wins频道发帖opportunity_won_alert/ Large Deal Won Alert#wins凭空case_escalation/ Case Escalation Process所以这三条是删除而不是改写:同页的 flow 表已经在讲这三条行为,示例里那些从未成立的细节没有保留价值。表里那两行自己也有不准之处,但那属于 #839 的表,按派单保留不动,已另立 #851。
本 PR 的改动(三语同步,各 47 行)
description去掉「工作流规则」:10callout 末句改写。原句「平台同样支持独立的工作流规则与审批流程元数据 —— 下文一并列出以供参考」两个半句都不成立(审批那半同样被 ADR-0019 移除,Setup 也无独立入口),整句无法只改一半,故一并写实⛔ 未动:
src/**、content/docs/releases/、#839 的 flow 表与其散文、任何守卫。验证
全量四件套 + lint + hygiene,均在共享锁下
NODE_OPTIONS=--max-old-space-size=4096跑:#839 落的
automation-docs-coverage守卫单独复跑:Test Files 1 passed (1) · Tests 20 passed (20);与docs-drift合跑 53 passed。控制字符自扫(超出 gate 覆盖面):对四个改动文件跑
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]'零命中,file(1)对四个文件均报UTF-8 text(非 data/binary)。反向验证:方向是「预测绿、实测绿」,不是红
先声明预测再跑:把整节(五种类型、工作流规则行、含
#wins的假示例)原样放回英文页,automation-docs-coverage守卫应当保持绿 —— 它的tableAfter锚在## Flows (multi-step)上、只读那张 flow 表和两个数词句,我删的整节在它的视野之外。实测:
Test Files 1 passed (1) · Tests 20 passed (20)—— 与预测一致,全绿。随后已还原。这条如实报成绿,而不是凑一个红:它证明的是本 PR 修的这类缺陷当前无门禁覆盖。派单明确要求本 PR 不加守卫,因此这里不补,只把这个事实写清楚 —— #839 的守卫派生校验了行集、触发面和两个数词,但「它做什么」那一列和表以外的散文都是纯散文,怎么写都不会红(#851 记录的两行错正是活在这条盲区里)。
越界发现(均已去重搜索后单独立单,未在本 PR 修)
opportunity-won-alert.flow.ts自身 description 同错WorkflowRuleSchema.parse()校验「Workflows」—— 该导出在平台上不存在 #852 ——AGENTS.md:120让 agent 用WorkflowRuleSchema.parse(),该导出不存在Process Monitor/Scheduled Jobs在平台上零命中(打finding,不入队)另:#749(sla-and-escalation 链到本页
#case-escalation锚点)同样落在本页,但本 PR 未新增或删除该锚点,互不影响。Generated by Claude Code