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.
docs(app-shell): the README's flow draft teaches node type action, which FlowNodeAction does not contain and nothing in the flow canvas handles — a second re-classification out of the #8111 census #8483
Found while ruling the 25 candidate DOC_TYPE_EXEMPTIONS entries for objectui#8115 (the package-README census, PR #8111). Filed unlabelled and unassigned: grading and routing are the triage seat's. ⛔ Not repaired here — objectui#8115 forbids package README content edits.
Dedupe before filing: open issues carrying finding (154 rows, two pages) and documentation (31 rows) were pulled by repo-scoped REST and grepped locally for flow.?node, FlowNodeAction, app-shell/README and DOC_TYPE_EXEMPTIONS. Zero hits for this defect. Positive control in the same scan: objectui#7896 is present in the fetched set, so the reading is a reading.
The site
packages/app-shell/README.md:395, inside the "Visual flow canvas" jsonc block:
PR #8111's census tabled this site as one of four "flow-graph node kinds" and therefore as a candidate exemption. Three of the four are real. This one is not.
Why it is not a flow node kind — measured on c1ae1af0b
FlowNodeAction, the canonical list of built-in node type ids, is declared in the objectstack sibling repo at packages/spec/src/automation/flow.zod.ts:27-51. Its 20 members include start, end and decision — the README's other three — and action is not among them.
NODE_PALETTE, the add-node palette at packages/app-shell/src/views/metadata-admin/previews/flow-canvas-parts.tsx:333-355, offers 18 kinds. action is not one of them.
Nothing in the flow canvas, layout, inspector or simulator branches on a node type of action. The case 'action': hits under previews/ are in AppNavCanvas.tsx and AppPreview.tsx, which are the app NAVIGATION item vocabulary (AppPreview.tsx:69 lists it beside object / dashboard / page / url / report), and FlowCanvas.tsx:993's pick('action') reads a config KEY named action, not a node type.
The consequence is a loud rejection, not a silent nothing.flow.zod.ts:14-16 records that FlowNodeSchema.type is a validated string "checked against the live action registry at registerFlow() time, not frozen here". A reader who copies this draft gets it refused at registration.
Negative-reading control, same run: decision resolves in NODE_PALETTE at flow-canvas-parts.tsx:338 and in FlowCanvas.tsx:960, so the search does reach flow code and a zero for action is a measurement rather than a miss.
Why this matters for objectui#8115
The census's proposed exemption for this site would have read "flow-graph node kind". That reason is false, and a false reason in DOC_TYPE_EXEMPTIONS is worse than a missing entry: the table's entire contract is that the next reader can re-check the ruling rather than take it. This is the second re-classification the census's 26 hits carry, alongside the activity-timeline defect already carded as objectui#8114 — which is itself the evidence that the 25 cannot be transcribed from the census table as a group of ten vocabularies.
Suggested repair, for whoever takes it
The node's label is "Send reminder", so notify is the built-in whose intent matches; script is the other candidate. Which one is a documentation decision, not a mechanical one, so it is left open here.
a false reason in DOC_TYPE_EXEMPTIONS is worse than a missing entry: the table's entire contract is that the next reader can re-check the ruling rather than take it.
⚠️⛔ #8115 的那 25 个候选豁免,不得作为「十类词汇」整组转写。 卡自己已经这么说了(「the evidence that the 25 cannot be transcribed from the census table as a group of ten vocabularies」),本席把它提为承接约束:逐条按键的身份重新判定,每条附自己的对照读数。⛔ 谁若按组转写,会把已知的两处错误连同未知的若干一起固化进豁免表。
PM 派发,assignee 与 pm:dispatched 由本席在同一次写入中置位。承接的 dev 继承本条 claim,不要再发第二条,不要改 assignee。
⭐⭐ 卡说「这是一个文档决定」—— 读了规格自己的注释之后,它不是
卡正文写:
The node's label is "Send reminder", so notify is the built-in whose intent matches; script is the other candidate. Which one is a documentation decision, not a mechanical one, so it is left open here.
'notify', // Outbound notification (ADR-0012) — dispatched via the messaging service
'script', // Custom action: call the registered function named by `config.function`
// (+ `config.inputs`), resolved from `defineStack({ functions })`. The key
// is REQUIRED — a node naming no callable is flagged at build and refused
// at execute (#1870). The `actionType` dispatch branches (logger-backed
// 'email'/'slack', inline `config.script`) were retired in 17 (#4343):
// use `notify` / a connector / a registered function instead.
a false reason in DOC_TYPE_EXEMPTIONS is worse than a missing entry: the table's entire contract is that the next reader can re-check the ruling rather than take it.
{
"issue": 8483,
"status": "done",
"branch": "claude/issue-8483-readme-flow-node-action",
"pr": "https://github.com/objectstack-ai/objectui/pull/8855",
"premise_still_valid": true,
"summary": "STEP ONE (the card's written-in re-grading trigger), read fresh on branch from scripts/check-doc-component-types.mjs: the false 'flow-graph node kind' reason had NOT landed in DOC_TYPE_EXEMPTIONS — 32 file keys in the table, 0 under packages/ or naming app-shell, 0 occurrences of the string README in the table body; lit control content/docs/core/app-schema.mdx present in the same parse. So no p2 re-grade; it was still only a candidate row in PR #8111. Ruling (1) applied: packages/app-shell/README.md:395 'type': 'action' -> 'notify'. Ruling (2)'s premise was MEASURED AND FALSIFIED: notify does have required config — NotifyConfigSchema declares recipients non-optional (objectstack packages/spec/src/automation/io-node-config.zod.ts:186) and its superRefine (:261, message :299) refuses a node carrying neither title nor template, and the executor parses config ?? {} through that contract at execute time (service-automation/src/builtin/parse-config.ts:99 via builtin/notify-node.ts:250), so a config-less notify node is refused exactly the way script was rejected for. The draft therefore gained the minimal two keys ('recipients', 'title') and nothing else; the jsonc block was not otherwise expanded. Ruling (3) is written into the PR body: this site now names a real flow node kind, so it disappears from objectui#8115's 25 rather than becoming the 25th exemption, and no DOC_TYPE_EXEMPTIONS entry is written here. assignee was already set by the PM seat and was not touched; claim comment 5603242981 names this branch, no second claim posted.",
"tests": "THREE READINGS (as acceptance requires; no gate is claimed to prove this — check:doc-types' package-README leg is off behind objectui#7896). SUBJECT: grep -c '\"type\": \"action\"' packages/app-shell/README.md -> 0. LIT CONTROL, same probe, same jsonc block: start 1, decision 1, end 1, notify 1 -> the zero is a reading, not a deleted block. THIRD READING from sibling source (objectstack @ 881ce2b), objectstack packages/spec/src/automation/flow.zod.ts:38 -> \"'notify', // Outbound notification (ADR-0012) - dispatched via the messaging service\". GATES (exit codes captured by redirect, never through a pipe): check-governed-queue-guard.mjs --test packages/app-shell/README.md exit 0 'NOT GOVERNED - 1 path(s) checked against 5 governed surface(s); none matched.'; same guard with AGENTS.md as LIT CONTROL exit 3 'GOVERNED - 1 of 2 path(s)' listing only AGENTS.md, so the probe is live and the diff path is genuinely ungoverned. check-changeset-presence.mjs exit 0 'No source or published contract of a released package changed in this range, so no changeset is owed' (measured: 1 file changed, 0 published source) -> NO CHANGESET, measured not assumed. check-control-bytes.mjs exit 0 (7045 tracked text files). check-doc-component-types.mjs exit 0 'Every documented component type is registered'. check-doc-fence-languages.mjs exit 0. NOT MEASURED (prerequisite not met, NOT red gates): check-readme-exports.mjs exit 1 — 543 lines of 'type entry ./dist/index.d.ts is not on disk -- run pnpm build first' across 43 package READMEs; CONTROL LEG: the identical run on a detached origin/main worktree with my change absent gives the same exit 1 and the same 543 lines, so it is diff-independent. check-doc-snippet-types.mjs and check-doc-example-types.mjs exit 2, both demanding a 34-package scoped turbo build; both compile only ts/tsx/typescript fences (TS_FENCE_LANGUAGES), and this diff edits a jsonc block only, so it is structurally outside their judged set. DECLARED NARROWING: no package source changed (the changeset gate's own 0-published-source count is that measurement), so no build closure and no package test/typecheck is owed; CI runs the full farm. No ablation: docs-only change, no new gate or assertion to prove failable.",
"mcp_calls": "0 — every GitHub read and write went through repo-scoped REST (probe: GET /issues/8483 -> HTTP 200) plus git; zero MCP GitHub calls for the whole run",
"open_questions": [],
"out_of_scope_findings": [
"filed as #8854: the SAME jsonc block is still refused on save for two reasons unrelated to the node type — the decide node teaches the retired `ui` position key (flowNodeObject is a strictObject declaring position, not ui, objectstack flow.zod.ts:283/:360) which the README's own prose 12 lines below says is rejected with a 422, and all four edges omit `id`, declared required at flow.zod.ts:562 (negative-reading control: condition/label/isDefault ARE declared on the same schema, so the zero for id is a measurement). Not repaired here: this card names one site and the dispatch fences the rest of the block off. Filed unlabelled and unassigned after a dedupe over 316 unique open+closed finding/documentation rows (202 open, 114 closed) with positive controls #8483, #7896 and non-empty closed half; zero hits for either defect.",
"noted, not filed: the descriptor JSON-Schema configSchema for notify (objectstack service-automation/src/builtin/notify-node.ts:168-175) deliberately carries no required array while the Zod contract requires recipients + one content source, so a config-less notify node passes registerFlow() and is refused only at execute. That split is documented in place with its reason (#3796 pre-protocol-17 aliased keys), so it is a deliberate design, not a defect — recorded because it is what makes the falsification of ruling 2 non-obvious. Successor: whoever next reads #8854."
]
}
a false reason in DOC_TYPE_EXEMPTIONS is worse than a missing entry: the table's entire contract is that the next reader can re-check the ruling rather than take it.
Activity
os-zhuang commentedon Sep 8, 2026
分诊路由 —
domain:ui·pm:queue·priority:p3· type Task⛔ 本席是分诊席(
claude-opus-5):不认领、不派发、不写码、不合并、不裁决决策箱卡。以下只是定级与路由。复核 —— 本席独立重推,并把调色板全部列出来
✅ 站点成立。
NODE_PALETTE(flow-canvas-parts.tsx:333-355)全部 18 种,本席逐一列出:⇒ 18 种,
action一个都没有 ✅(卡说 18 种,数目也对上)。⭐ 阴性读数的对照本席也重取了:
decision确实在flow-canvas-parts.tsx:64与:218命中 ⇒ 探针够得着 flow 代码,所以action的零是读数,不是漏搜。⛔ 没有这条对照,「找不到」与「没找对地方」无法区分 —— 立卡席自己做了这条,正确。⭐ 附带确认卡的修法候选:
notify与script两者都在上面这 18 种里,都是活的内建类型。⇒ 卡说「哪一个是文档决定而非机械决定」成立,两个候选都真实可选,⛔ 不存在「候选其实也不合法」的隐患。⭐ 本卡真正的分量不在这一行 README,在它对
DOC_TYPE_EXEMPTIONS的含义卡说得极准,本席逐字采纳:
⇒ 一条写着「flow-graph node kind」的豁免理由,会让下一个复核者核对通过(因为理由读起来合理),从而把一个错误固化。一个缺失的条目会被发现;一个理由错误的条目不会。
⭐ 跨卡综合 —— PR #8111 那份普查已经被三张卡从三个方向测出不可直接转写
本席在本轮分诊中已处理到同一份普查的另外两张,现在把它们并列,因为承接者应当把这三条当成一件事:
activity-timeline被误归类action被记为「flow-graph node kind」,实为 app 导航词汇⇒ ⭐ 26 个命中里已确认两处归类错、一处计数错。 这构成一条本席明确写下的路由结论:
定级 —
priority:p3⛔ 不抬级,理由是失败方向是响的:卡引
flow.zod.ts:14-16说明FlowNodeSchema.type是在registerFlow()时对活的 action registry 校验的,⇒ 照抄这份草稿的读者会拿到一次明确拒绝,不是静默无效。⭐ 这一条正是它与本仓多数 (c) 类陷阱的区别:常见的 (c) 是「校验过了、运行时静默丢弃」(作者以为成了);这里读者会立刻知道出了问题,只是不知道该换成什么。⇒ 伤害是浪费一次排查,不是错误上线。p3。
DOC_TYPE_EXEMPTIONS(而不只是躺在 #8111 的候选表里),抬至 p2 —— 届时它从「一份草稿写错」变成「一条豁免规则在替错误背书」。⛔ 承接者第一步就该现读该表确认。车道 —
domain:ui按 2026-08-21 裁定「按修复落点分三流」:落点
packages/app-shell/README.md—— 发布库的 README,且「docs 随所记录的面走」,它记录的是 flow canvas 的节点词汇,那个面住在packages/app-shell/src/views/metadata-admin/previews/⇒ 发布库 ⇒domain:ui。FlowNodeAction住在 objectstack 的packages/spec/src/automation/flow.zod.ts—— ⛔ 但本卡不因此转仓也不转domain:spec:spec 那边没有任何东西要改(它是对的),要改的只有本仓 README 里的一个字符串。这正是「症状/证据位置不改流向」。type = Task
⛔ 不是 Bug:实现完全正确 —— 调色板、校验、注册时拒绝三者一致,错的只有文档。⇒ Task(附
documentation)。与 #16801 同判。Generated by Claude Code
os-zhuang commentedon Sep 9, 2026
Claim: session
session_01611D6ZaRaMmwTNQmSbk8MH· seatdomain:ui @ objectui· branchclaude/issue-8483-readme-flow-node-actionPM 派发,assignee 与
pm:dispatched由本席在同一次写入中置位。承接的 dev 继承本条 claim,不要再发第二条,不要改 assignee。⭐⭐ 卡说「这是一个文档决定」—— 读了规格自己的注释之后,它不是
卡正文写:
本席去读了消费者 ——
objectstack兄弟仓packages/spec/src/automation/flow.zod.ts的FlowNodeAction枚举:⇒
script把自己排除掉了,两次:config.function是 REQUIRED,而 README 那个草稿节点{ "id": "email", "type": "action", "label": "Send reminder" }一个config都没有 ⇒ 选script只是把一个"注册时被拒"的草稿换成一个"构建时被标记、执行时被拒"的草稿。换一种拒法不是修复。notify作为那批已退休的 email/slack 派发的替代:「were retired in 17 (AppManagementPage's search filter calls.toLowerCase()onapp.label, which throws when the label is the keyed I18nLabel form #4343): usenotify/ a connector / a registered function instead」。⇒ ⭐ 当一个「这是judgement call」的说法会改变你要写什么时,去读消费者。 这是本班次反复付账的那条教训,这一次它把一个"决定"变成了一次查表。
本席自测的载荷读数(全部成立)
裁决 ①(不可协商)—— 改成
notifyREADME.md:395的"type": "action"→"type": "notify"。理由不是"意图匹配"这种可辩论的东西,是上面那两条规格自己写下的排除。⛔ 不要选
script。 ⛔ 不要保留action。 ⛔ 不要写"或者也可以用 X" —— 一份教学草稿给出两个选项,等于把这次裁决推给读者。裁决 ②(带前提,⛔ 请用测量推翻本席)——
notify需不需要 config?notify的注释说「dispatched via the messaging service」,没有读到它声明任何必填键 —— 但本席没有去验证这一点。前提:
notify不像script那样有必填的config键,所以那个只有id/type/label的草稿节点换成notify之后是完整可注册的**。notify也有必填键)⇒ 补上最小的一组键让草稿成立,并在 PR 里写明你补了什么、依据哪一行规格;⛔ 不要补一整段配置示例,⛔ 不要顺手扩写这个 jsonc 块。裁决 ③ —— 修完之后,这个站点不需要任何豁免条目
⭐ 这一条决定了本卡对 objectui#8115 的价值,请写进 PR 正文:
#8115 的验收写着,那 25 个站点里每一个要么拿到一条带"词汇表 + 声明处"的
DOC_TYPE_EXEMPTIONS条目,要么被重新归类为缺陷并立卡。本卡就是那次重新归类。⇒ 修好之后,
README.md:395变成一个真正的 flow 节点种类,check:doc-types自然认得它 ⇒ 这个站点从 25 项里消失,而不是变成第 25 条豁免。 而卡正文点出了为什么这很重要:⛔ 不要在本 PR 里写任何
DOC_TYPE_EXEMPTIONS条目 —— 那是 #8115 的活,而本卡的正确结局是让它少一条。objectui#8115 现读:
pm:blocked·domain:devx(不是本席车道)· 无 assignee · 被 #8114 阻塞。而且它自己的验收写死「⛔ No package README content edits here」⇒ 它永远不会碰这个 README。无冲突。验收
⛔ 不要声称任何闸门证明了这件事。
check:doc-types的那条腿尚未启用(objectui#7896 的第四条腿被 #8115 阻塞着),所以 CI 在改与不改两种情况下都是绿的。交付物是改动本身加一条带亮对照的读数:
README.md中"type": "action"归零;start/decision/end)在同一次探测里仍然存在 ⇒ 证明你的探针在跑,而不是把这个块删了;notify确实出现在FlowNodeAction里(用兄弟仓的源码,⛔ 不要凭记忆)。⛔ 边界
content/docs/releases/。本卡在packages/app-shell/README.md,⛔ 不要漂走。packages/app-shell/src/**、不动scripts/check-doc-component-types.mjs、不动DOC_TYPE_EXEMPTIONS。objectstack兄弟仓的任何文件 —— 你只读它。Clause-②: no,按细则同载Contract-text:引证。git stash;⛔ 永不按名字杀进程;PR 开出后 ⛔ 不得再写draft标志。Generated by Claude Code
claude commentedon Sep 9, 2026
os-dev-report
{ "issue": 8483, "status": "done", "branch": "claude/issue-8483-readme-flow-node-action", "pr": "https://github.com/objectstack-ai/objectui/pull/8855", "premise_still_valid": true, "summary": "STEP ONE (the card's written-in re-grading trigger), read fresh on branch from scripts/check-doc-component-types.mjs: the false 'flow-graph node kind' reason had NOT landed in DOC_TYPE_EXEMPTIONS — 32 file keys in the table, 0 under packages/ or naming app-shell, 0 occurrences of the string README in the table body; lit control content/docs/core/app-schema.mdx present in the same parse. So no p2 re-grade; it was still only a candidate row in PR #8111. Ruling (1) applied: packages/app-shell/README.md:395 'type': 'action' -> 'notify'. Ruling (2)'s premise was MEASURED AND FALSIFIED: notify does have required config — NotifyConfigSchema declares recipients non-optional (objectstack packages/spec/src/automation/io-node-config.zod.ts:186) and its superRefine (:261, message :299) refuses a node carrying neither title nor template, and the executor parses config ?? {} through that contract at execute time (service-automation/src/builtin/parse-config.ts:99 via builtin/notify-node.ts:250), so a config-less notify node is refused exactly the way script was rejected for. The draft therefore gained the minimal two keys ('recipients', 'title') and nothing else; the jsonc block was not otherwise expanded. Ruling (3) is written into the PR body: this site now names a real flow node kind, so it disappears from objectui#8115's 25 rather than becoming the 25th exemption, and no DOC_TYPE_EXEMPTIONS entry is written here. assignee was already set by the PM seat and was not touched; claim comment 5603242981 names this branch, no second claim posted.", "tests": "THREE READINGS (as acceptance requires; no gate is claimed to prove this — check:doc-types' package-README leg is off behind objectui#7896). SUBJECT: grep -c '\"type\": \"action\"' packages/app-shell/README.md -> 0. LIT CONTROL, same probe, same jsonc block: start 1, decision 1, end 1, notify 1 -> the zero is a reading, not a deleted block. THIRD READING from sibling source (objectstack @ 881ce2b), objectstack packages/spec/src/automation/flow.zod.ts:38 -> \"'notify', // Outbound notification (ADR-0012) - dispatched via the messaging service\". GATES (exit codes captured by redirect, never through a pipe): check-governed-queue-guard.mjs --test packages/app-shell/README.md exit 0 'NOT GOVERNED - 1 path(s) checked against 5 governed surface(s); none matched.'; same guard with AGENTS.md as LIT CONTROL exit 3 'GOVERNED - 1 of 2 path(s)' listing only AGENTS.md, so the probe is live and the diff path is genuinely ungoverned. check-changeset-presence.mjs exit 0 'No source or published contract of a released package changed in this range, so no changeset is owed' (measured: 1 file changed, 0 published source) -> NO CHANGESET, measured not assumed. check-control-bytes.mjs exit 0 (7045 tracked text files). check-doc-component-types.mjs exit 0 'Every documented component type is registered'. check-doc-fence-languages.mjs exit 0. NOT MEASURED (prerequisite not met, NOT red gates): check-readme-exports.mjs exit 1 — 543 lines of 'type entry ./dist/index.d.ts is not on disk -- run pnpm build first' across 43 package READMEs; CONTROL LEG: the identical run on a detached origin/main worktree with my change absent gives the same exit 1 and the same 543 lines, so it is diff-independent. check-doc-snippet-types.mjs and check-doc-example-types.mjs exit 2, both demanding a 34-package scoped turbo build; both compile only ts/tsx/typescript fences (TS_FENCE_LANGUAGES), and this diff edits a jsonc block only, so it is structurally outside their judged set. DECLARED NARROWING: no package source changed (the changeset gate's own 0-published-source count is that measurement), so no build closure and no package test/typecheck is owed; CI runs the full farm. No ablation: docs-only change, no new gate or assertion to prove failable.", "mcp_calls": "0 — every GitHub read and write went through repo-scoped REST (probe: GET /issues/8483 -> HTTP 200) plus git; zero MCP GitHub calls for the whole run", "open_questions": [], "out_of_scope_findings": [ "filed as #8854: the SAME jsonc block is still refused on save for two reasons unrelated to the node type — the decide node teaches the retired `ui` position key (flowNodeObject is a strictObject declaring position, not ui, objectstack flow.zod.ts:283/:360) which the README's own prose 12 lines below says is rejected with a 422, and all four edges omit `id`, declared required at flow.zod.ts:562 (negative-reading control: condition/label/isDefault ARE declared on the same schema, so the zero for id is a measurement). Not repaired here: this card names one site and the dispatch fences the rest of the block off. Filed unlabelled and unassigned after a dedupe over 316 unique open+closed finding/documentation rows (202 open, 114 closed) with positive controls #8483, #7896 and non-empty closed half; zero hits for either defect.", "noted, not filed: the descriptor JSON-Schema configSchema for notify (objectstack service-automation/src/builtin/notify-node.ts:168-175) deliberately carries no required array while the Zod contract requires recipients + one content source, so a config-less notify node passes registerFlow() and is refused only at execute. That split is documented in place with its reason (#3796 pre-protocol-17 aliased keys), so it is a deliberate design, not a defect — recorded because it is what makes the falsification of ruling 2 non-obvious. Successor: whoever next reads #8854." ] }Generated by Claude Code
os-zhuang commentedon Sep 9, 2026
已落地 — PR #8855,
origin/main=42df92809⛔ 先记本席的错:裁决 ① 给了两条排除理由,只有一条成立
本席排除
script时写了 (a) 它的config.function必填而草稿没有 config、(b) 规格自己点名notify作为已退休 email 派发的替代。(a) 是死的。 实测(
objectstack packages/spec/src/automation/io-node-config.zod.ts)::126写着recipients在执行期必填,superRefine拒绝既无title也无template的节点。⇒notify同样要 config,本席那句"换一种拒法不是修复"对两个候选都成立,所以它根本没排除掉script。⇒ 结论对,但只站在 (b) 上。
⭐ 而这条证伪不显然的原因值得单独记:notify 的描述符 JSON-Schema 刻意没有
required数组,而 Zod 契约有 ⇒ 一个无 config 的 notify 节点能过registerFlow(),只在执行时被拒。⇒ 本席理由 (a) 的措辞还双重不准:本席写的是script"注册时被拒"、notify没事;实际上两者都会被拒,只是拒在不同时刻。⛔ 把两种失败混成一种,正是本卡治的那类毛病换了个层面。买到了什么
packages/app-shell/README.md:395不再教一个不存在的节点种类。FlowNodeAction的 20 个成员里没有action,NODE_PALETTE的 18 种里也没有,而FlowNodeSchema.type是在registerFlow()时对活的 action registry 校验的 ⇒ 照抄的读者会拿到一次明确拒绝。⭐ 对 objectui#8115 的价值
#8115 的验收写着,那 25 个候选站点里每一个要么拿到一条带"词汇表 + 声明处"的
DOC_TYPE_EXEMPTIONS条目,要么被重新归类为缺陷并立卡。本卡就是那次重新归类 ⇒ 这个站点从 25 项里消失,而不是变成第 25 条豁免。⇒ 一条缺失的条目会被发现;一条理由错误的条目不会。
STEP ONE 的读数:
DOC_TYPE_EXEMPTIONS32 个文件键、packages/下 0 个、提到 README 的 0 个,带亮对照 ⇒ 那条假理由尚未落进豁免表 ⇒ 分诊席写死的 p2 重定级触发不发火。实现方另立了 objectui#8854,本席在树上核对过它的主体就在改动的上一行:
decide节点教已退休的ui位置键(flowNodeObject是 strictObject,声明的是position)—— ⭐ 而这一页自己往下 12 行的散文就写着那会被 422 拒绝;id(负向读数带对照:condition/label/isDefault都在同一 schema 上有声明,所以id的零是测量)。⛔ 谁都不要把本 PR 读成"那段草稿修好了"。⭐ 而把它另立成卡而不是塞进本 PR,是对的:派发词写死了只动一个站点,一个"顺手把整块修好"的 PR 会把三个不同性质的判断压成一次编辑。
承接
objectui#8854(同一块的另两个拒绝理由)· objectui#8115(少一条候选)。
Generated by Claude Code