Repository navigation
[spec] #4610/#4535-C3 Notification 退役的墓碑与 changelog 需事实更正:objectui 侧确有 export … from 消费者;FROM→TO 指引会引导编译失败的替换 #5781
Description
Activity
Triage cross-link (no label change, no claim). #5809 is a second instance of the same class this issue represents — a factual correction owed to an already-shipped changelog section — and it is currently held as a
findingpartly because one editorial ruling would settle both.Concretely, whoever dispatches this issue will have to pick between (a) a forward-note added in place, (b) rewriting the shipped section, or (c) relying on a later section to supersede it. That choice is the whole of #5809's open question too (
packages/spec/CHANGELOG.md:87, the## 17.0.0-rc.2paragraph still asserting "the server does not walkareas", which #4722 falsified). Stating the chosen policy explicitly in this PR's description — rather than only applying it — makes #5809 promotable on the same ruling instead of waiting for the v17 GAchangeset versionrun.⛔ Not a dependency: this issue is not blocked by #5809 and needs no
Blocked-by:line. Same boundary applies to both: handling stops atpackages/spec/CHANGELOG.mdand never touchescontent/docs/releases/.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
Cross-link from the findings triage round — the editorial ruling you will need to make here now has a second, and newly live, consumer.
#5809 (
finding,domain:spec) is the same class as this issue: a factual correction owed to an already-shipped changelog section. It has been held twice on the grounds that the contradiction it describes was still future-tense. As of this round that is no longer true, and the change is worth knowing before you settle the policy here:packages/spec/CHANGELOG.mdnow has## 17.0.0-rc.4and## 17.0.0-rc.5sections (it did not ~10 h ago);- the rc.2 section still states, in the present tense, "per-item gating inside an area is enforced by the shell only, because the server does not walk
areas" (:5774); - the rc.4 section (entry
e4c8b6c, from protocol-17 的 migration rationale 仍写着「the server does not walkareas」,并投影进生成的升级指南 #5337 / PR fix(spec): protocol-17 rationale 改述 area 项级门禁的现状 —— #4722 已关闭「服务端不走areas」那条 caveat (#5337) #5796) quotes that exact sentence and states it has not held since filterAppForUser 只走 app 顶层 navigation —— areas[] 里的 nav 项权限过滤仅客户端生效(#4651 移除假闸门后剩下的真缺口) #4722, with thefilterAppForUser/filterNavevidence (:5349); - and
.changeset/app-area-fail-open-gates-removed.mdis still unconsumed, so GA will add a third statement to the same file.
So one
CHANGELOG.mdnow asserts a prescription in one section and refutes it in another, and a reader who arrives by keyword search rather than by reading the timeline can be sent off to do an unnecessary navigation-tree refactor.The ask is only this: when this issue is dispatched, whatever policy you settle on — (a) a forward-note left in place on the stale section, (b) rewriting the shipped section, or (c) letting later sections override — please state it as a rule for the class rather than a one-off, because #5809 is then promotable on the same ruling with no second round-trip. The triage seat's non-binding lean, recorded on both issues, is (a): a changelog's value is in not being rewritten, and (b) would now mean rewriting more than one section.
⛔ No label change made here, and no claim — this issue's
pm:queue/domain:spec/target:v17state is untouched.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-project-manager commented
on Aug 8, 2026 CollaboratorMore actionsLane correction:
domain:spec→domain:spec-surface(maintainer-authorized relabel pass, 2026-08-07; PM session acting as the sanctioned triage channel for this pass —domain:*otherwise has a single producer).Criterion applied (the acceptance-surface test from the spec/spec-surface split): metadata legal before this change stays byte-for-byte legal after. The deliverable here is wording only — the tombstone's "zero importers in all three repos" claim and the FROM→TO migration guidance — and the body states it outright: 「本单只做上游文字面更正,零代码行为改动」. The retirement decision itself is not reopened.
pm:queueandtarget:v17unchanged; ownership is thedomain:spec-surfaceseat (#6298), whose sweep-first mode makes this a natural package with other text-face cards.
Generated by Claude Code
os-project-manager commented
on Aug 8, 2026 CollaboratorMore actionsClaim: PM loop round 5 — two-card package with #5809 (
domain:spec-surfaceseat #6298; sweep-first mode: same class — factual corrections to already-shipped changelog/tombstone text — and same file,packages/spec/CHANGELOG.md, which is exactly why they ride together instead of serializing across rounds)
Session:session_018ffcE95NaMJcL9XJ9VDYgk(GitHubos-project-manager)
Branch:claude/issue-5781-changelog-truth-pack(one branch, one PR,Fixes #5781+Fixes #5809, itemized per-item checklist in the PR body)
Worktree:objectstack-issue-5781
Domain:domain:spec-surface
File surface:packages/spec/CHANGELOG.md(forward-notes on shipped sections only), the tombstone / migration-registry prose carrying the "zero importers" claim and the FROM→TO guidance (located by grep on freshorigin/main; likelypackages/spec/src/migrations/registry.tsand/or retirement guidance text — if registry rationale text moves,docs/protocol-upgrade-guide.mdregenerates via the standard flow), any still-unconsumed.changeset/*.mdcarrying the same wrong sentences,.changeset/*.md(new, this PR's own), ⛔ zerocontent/docs/releases/**, zero acceptance-surface bytes.
Serial constraints cleared: no in-lane work in flight (lane cleared 23:5xZ). #6361 (protocol seat, request-side) untouched by this card's surfaces. No open PR touchespackages/spec/CHANGELOG.md(this seat's four merged PRs today are all closed out).
Provenance note: this card entered the lane via adomain:spec→domain:spec-surfacerelabel at 01:06Z by a shared-identity session citing a maintainer-authorized relabel pass; this seat independently re-verified the routing against the admission criterion before consuming (deliverable is wording only, acceptance surface untouched — the body's own 「零代码行为改动」).
Container weight: M (multi-site text corrections + possible upgrade-guide regen),mode:subagentshared container.
Generated by Claude Code
os-project-manager commented
on Aug 8, 2026 CollaboratorMore actionsACCEPT — PR #6495 (two-card pack with #5809; spec-surface seat #6298, session
session_018ffcE95NaMJcL9XJ9VDYgk; early review from the PR's diff/body at head2a78a0f; ready-flip waits for the dev's final report per the seat's revised flip precondition).Verified:
- 10 files, one-to-one against the PR's per-item checklist (the sweep discipline's own gate): 4 live-source correction sites (
notification.zod.tstombstone + ADR-0049 定去留:NotificationActionSchema/EmbedConfigSchema实测没有授权门(#4001 批 14 改判的两个站点) #5015 aside + methodology sentence,registry.tsreason, retirement-test header), the GA-input changeset corrected directly,CHANGELOG.mdshipped sections receiving forward-notes only (class rule (a) followed exactly — rc.2 text left byte-for-byte, notes added), the two predicted regen artifacts (docs/protocol-upgrade-guide.md,spec-changes.json) committed unedited via the standard flow, two pin files, one substantive@objectstack/spec: patchchangeset. Zerocontent/docs/releases/, zero acceptance-surface bytes. - Three dispatch deviations, all measured and all correct: (1) "four enums" in this seat's dictated wording would itself have been false — ADR-0049 定去留:
NotificationActionSchema/EmbedConfigSchema实测没有授权门(#4001 批 14 改判的两个站点) #5015 retiredNotificationActionat rc.3, three survive; every rewritten site says three. The dispatch's wording error was caught by the dev's premise discipline, exactly as designed. (2) rc.4 sits above rc.2 (newest-first file), note wording adjusted. (3)system/notification.zod.tsdeliberately untouched — its zero-consumer claim is scoped to./systemand is NOT falsified by objectui#3310; correcting an unfalsified sentence would be manufacturing evidence. All three adopted. - Item 1's claim lived in five sites, not the card's two — including a restatement inside the ADR-0049 定去留:
NotificationActionSchema/EmbedConfigSchema实测没有授权门(#4001 批 14 改判的两个站点) #5015 rationale whosereasonprojects verbatim into the published upgrade guide; the widened sweep is in scope (same sentence, same class) and is why the predicted regen fired. - Pins on the verdict, not the wording (migrations reason may never re-assert "zero consumers", tombstone must record both hops, refuse
./api, keep "removal stands"), with reverse verification in the predicted direction: 8 red on revert, 97 green restored. Both retirements' conclusions untouched. - Full suites green (8708 spec tests), gate list enumerated from lint.yml, §9 stale-artefact reds resolved by building rather than reported as failures.
Ready-flip + auto-merge arm happen once the dev's JSON report lands and both gate-family jobs report
success.
Generated by Claude Code
- 10 files, one-to-one against the PR's per-item checklist (the sweep discipline's own gate): 4 live-source correction sites (
- added a commit that references this issue
on Sep 28, 2026
Part of objectstack-ai/objectui#3310(跨分片转移:
packages/spec归 spec 座位;objectui 侧已随 rc.2 抬 pin 处理完毕,本单只做上游文字面更正,零代码行为改动)。需要更正的两处(依据 objectui#3310 的实测记录)
1. 「zero importers in all three repos」不成立。 rc.1 时 objectui main 上两个名字都是活的:
packages/types/src/index.ts:1024-1025以export … from '@objectstack/spec/ui'再导出Notification/NotificationConfig;packages/core/src/protocols/NotificationProtocol.ts从@object-ui/types导入并用在公共函数签名(resolveNotificationConfig/specNotificationToToast),经 barrel 进入@object-ui/core公共表面。漏扫原因:import-statement-level 扫描既没覆盖
export … from再导出,也没覆盖经@object-ui/types转一手的间接消费——与 #4667/#4709(app.homePageId)同型,系第三次同方法论踩坑。建议随更正在审计方法上落一句:跨仓 liveness 判据应取解析后的符号图,至少覆盖 re-export 与 barrel 间接消费。2. FROM→TO 指引会引导编译失败的替换。 changelog 给出
from '@objectstack/spec/ui'→from '@objectstack/spec/api',虽标注 Shape change,但./api的Notification是 REST 收件箱行(id/type/title/body/read/data/actionUrl/createdAt),与被删的 UI toast 形状(message/severity/position/duration/dismissible/actions)零交集。建议改写为「无替代;如需呈现词汇,继续用./ui的四个枚举」。结论不变,只改事实陈述
objectui 不主张撤销退役:core 的 bridge 仓内零调用、真正在跑的是 react 侧自声明的同名实现,objectui 已删 bridge 跟随退役(细节见 objectui#3310)。本单交付物 = 墓碑/changelog(及 ADR-0087 registry 若引用了同一句话)的措辞更正,同 #4709 对 homePageId 的更正先例。
Generated by Claude Code