Skip to content

Commit 832bd06

Browse files
committed
Merge remote-tracking branch 'origin/main' into claude/project-thread-1minft
2 parents 839ba45 + 00d0668 commit 832bd06

39 files changed

Lines changed: 1272 additions & 140 deletions
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@objectstack/skills': patch
3+
---
4+
5+
docs(skills): objectstack-upgrade says a stored row in a ≤16.x shape stops being rewritten at read on 18.3, and teaches the stored pass on 18.2 or earlier first
6+
7+
Clause-②: no
8+
Metadata-protocol: none
9+
10+
- **Before.** § "Stored rows" said every stored-row rehydration replays the conversion chain including entries retired from the load path, so "a row written under protocol 16 therefore rehydrates in its protocol-17 shape without anybody editing it", and offered `os migrate meta --stored --apply` only as a way to make that durable. § 3.6 called the read-time rehydration "still the guarantee", the report template marked the stored pass optional ("rows rehydrate correctly today"), and eval 4 expected the same answer. On 18.3, which drops every conversion retired at or below 16.x, that advice leaves such a row unconverted for good.
11+
- **Now.** The section says rehydration replays only the conversions the installed release still carries, that 18.3 drops those retired at or below 16.x, and to run the stored pass on the release being left (18.2 or earlier for such a row) before moving; § 3.6 says the `os migrate meta --stored --json` exit `0` counts only on the release being left, because one that dropped a row's conversions answers `0` without recognising the row; the report template's stored-pass line says it is owed before any release that drops the rows' conversions. Eval 4's expected answer says the same, and new eval 5 asks the 18.1 → 18.3 question directly.
12+
- `SKILL.md` and `references/examples-upgrade.md` stay under their token ceilings (no ceiling moves). No schema, key, command or behaviour changes.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
'@objectstack/service-automation': patch
3+
---
4+
5+
fix(service-automation): a connection marked "reconnect required" says the cause that actually happened (#28863)
6+
7+
Clause-②: no — prose, and the stored `status_reason` text of two refresh paths. No accept set, status value, error code or export changes meaning.
8+
Metadata-protocol: none
9+
10+
A connector connection becomes `reconnect_required` four ways: the authorization server refuses the grant on refresh (`invalid_grant`); it issued no refresh token; the connection keeps no client to refresh with; or the upstream refuses the connection's token while an `mcp` instance discovers its tools. The connection's stored reason, the `sys_connector_connection.status` field help and the `ConnectorConnectionStore#markReconnectRequired` docblock all named only the first.
11+
12+
- **The stored reason, per path.** `reconnectRequiredReason` takes an optional cause (`'refused'`, `'no_refresh_token'`, `'no_client'`; `'refused'` when none is given, the old sentence unchanged). The no-refresh-token path now stores "…its authorization server issued no refresh token, so an access token the connection has to renew cannot be renewed…", and the no-client path "…its connection keeps no client to refresh with, so an access token it has to renew cannot be renewed…". Neither says the server refused anything, and neither says the access token expired: a refresh also runs on a cache miss and on a dispatch's 401, while the token may still be valid. The dispatch's 503 refusal carries the same sentence.
13+
- **The field help and the docblock** list all four causes and point to `status_reason` for which one happened.
14+
- Unchanged: the refused path's sentence, the MCP discovery path's own reason, and every status, code and write.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
'@objectstack/metadata-protocol': patch
3+
'@objectstack/objectql': patch
4+
---
5+
6+
docs(metadata-protocol, objectql): three docblocks say where a code package's `objectExtensions` go: never stored as `object_extension` items or into the metadata service, but registered by the engine's `registerApp` as `'extend'` contributors (#28874)
7+
8+
Clause-②: no
9+
Metadata-protocol: none
10+
11+
Comment only, with no behaviour change. The header of `protocol-object-extension-item.ts`, the `foldObjectExtendersFromRegistry` docblock in `protocol.ts` and the `SchemaRegistry#foldObjectExtendersOnto` docblock each said that a compiled artifact's `objectExtensions` are stored (as `object_extension` items, or as a separate collection of the metadata service). They are not. The ObjectQL engine's `registerApp` registers each one as an `'extend'` contributor of its target object. The artifact loader maps the collection to `object_extension` but files no item from it, because an extension carries `extend` and no `name`. The type's items are the stored rows the `/api/v1/meta` doors write. The wording matches the `@objectstack/spec` registry row comment (#28873). A patch changeset is used because the corrected docblocks ship in each package's `dist` declarations.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
'@object-ui/app-shell': patch
3+
---
4+
5+
fix(app-shell): a ⌘K record hit opens under the app that lists its object, not under the app the palette was opened in (#28890)
6+
7+
Clause-②: no
8+
Metadata-protocol: none
9+
10+
An app whose navigation names no object (a component-only app, such as cloud's Account app) searches every object from the command palette, so its hits name objects it does not list. Each hit opened under that app all the same, and the record page drew its sidebar and app switcher, neither of which reaches the object: an environment found from the Account app opened in the Account app, not in the Cloud app that lists environments.
11+
12+
- **Now.** A record hit opens under the palette's own app when that app lists the hit's object; otherwise under the first app the user can open (active, not hidden, in metadata order) that lists it; and under the palette's own app when none does. "Lists" means a `type: 'object'` entry naming the object, at any depth of the app's `navigation` or of any `areas[].navigation`, among the entries the member is shown there.
13+
- **Unchanged.** When the palette's app lists the object, the hit opens there as before. The palette's search scope is untouched: an app with no object navigation still searches every object.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@object-ui/app-shell': patch
3+
---
4+
5+
Clause-②: no
6+
Metadata-protocol: none
7+
8+
Marketplace package page: README blockquotes (`>` lines) render as quotes instead of printing their `>`, and a GitHub alert (`> [!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]`, `[!CAUTION]`) renders as the same plain quote without its marker. The Versions panel renders each version's release notes as Markdown (headings, bold, lists, code) in a compact size, instead of printing them as plain text; single line breaks inside a paragraph now join as Markdown does. Raw HTML stays skipped in both places.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@object-ui/plugin-tree': patch
3+
---
4+
5+
fix(plugin-tree): the object tree's loading and empty placeholders speak the page's language
6+
7+
Clause-②: no
8+
Metadata-protocol: none
9+
10+
`object-tree` drew its loading line and its empty line as the English literals `Loading…` and `No records`, so a zh-CN page showed English in the middle of a localized view. Both now read the bundle, `common.loading` and `common.noData`, the same keys the repeater and record-picker elements read for their own placeholders. A zh-CN page now reads 加载中… and 暂无数据, and English reads `Loading…` and `No data` (the empty line used to say `No records`). The `object-tree` contract declares no empty-text key, so there is no authored text to override these.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@object-ui/console': patch
3+
---
4+
5+
fix(console): the audit log's Action column and detail drawer show the declared action label
6+
7+
Clause-②: no
8+
Metadata-protocol: none
9+
10+
Setup › Audit Log printed each row's stored `sys_audit_log.action` value (`update`, `create`) in the Action column's badge and in the detail drawer's title badge, while the same page's Action filter already offered the declared option labels. In a Chinese console the column therefore read in lowercase English beside a filter reading 更新 / 创建.
11+
12+
Both badges now take the label of the row's action from the filter's own choices (`actionFilterOptionsOf`, through the new `actionLabelOf` in `auditLogActions.ts`), so the badge and the filter name an action alike. An action no option declares shows its stored value, as before. The badge tones, the filter and the list fetch are unchanged.

‎.claude/skills/pm-dispatch/references/execution-duties.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
- 候选 = open、未 assign、无 `needs-user-decision`、无 `pm:retriage`;⛔ 排除三门皆无的 `tooling` 卡。
99
- 席改标:卡余项实测路径整落本席包树 ⇒ 本席改 `domain:*`,审计评论列路径与新旧标同笔。
1010
- 席改标限未派发卡;带 `needs-user-decision`、open `Blocked-by:` 或 `security` 的 ⛔ 不改,仍问分诊。
11-
- 无分诊审计评论即非候选;例外:sub-issue 承父卡首触,main-red 锚卡见 `landing-operations.md`。
1211
- 每张候选读全文 + 全部评论,写派发词前做决策复读:评论读到最后一页。
1312
- 维护者裁决逐字引入派发词裁决分区作约束,无则写明无裁决。
1413
- 派发前做前提过时检查,裁决同罪,三面都查:动作面、卡引用面、工作项面。
@@ -55,7 +54,12 @@
5554
- `pm:blocking` 级内先按解锁扇出(从 `Blocked-by:` 反向索引现算,⛔ 扇出数不落标签)。
5655
- 全序每级现读/现算,零逐卡维护;同级先 `Bug` 再卡龄;无级/缺 `Path:` 轮报记分诊缺口。
5756
- 一车道多席按全序交替取卡:席 1 奇位、席 2 偶位;只为破交替才发 `split`;认领戳仲裁。
58-
- 解锁那一刻 PM 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。
57+
- 空闲杂务:无卡可认领或等分诊的车道席对本车道卡做下四件;⛔ 不定级,自分诊例外照旧。
58+
- ① 交付卫生:交付卡补收尾记录;离手摘 `pm:*` 同笔设下一态;`Blocked-by:` 全关即重验回队。
59+
- ② 最老 open 卡对 `origin/main` 复读前提与修否并贴证据;已修交分诊或维护者关,⛔ 不自关。
60+
- ③ 新卡预读:复现、查重查询与命中数、一行 `Suggested-grade: p<n> · <理由>`;⛔ 不写级标签。
61+
- ④ 本车道 `finding` 卡补缺的 `reach:` 或复现,或写明为何不合三类。
62+
- ⛔ 不静默等分诊:敲信箱键(`project-forms.md`);报「等分诊」须引所敲评论 id,引不出即未问。
5963

6064
## 认领(先认领后动工)
6165

@@ -101,7 +105,6 @@
101105
- 纯机械一行 PM 酌定可至下限档;降档施工的补偿控制 = 复核席跑契约复审档。
102106
- 降档施工只经契约复审档复核到达维护者,⛔ 不新增标签不新增链。
103107
- 强制条款②:放宽接受集或扩大公开面的卡默认判断档施工;命中即 spec 车道的活。
104-
- 条款②判据即 triage 机械边界测试与 `references/lanes/spec.md` 席内分派判据,⛔ 不另抄。
105108
- 负边界:运行时权限/安全行为变更不是条款②,归人工地板安全/权限边界类。
106109
- 条款②只指已发布契约面,拉回已声明契约不触它;卡面复述仍是条款②。
107110
- 收窄已发布接受集的卡是 `Clause-②: no`,不移车道;入队前欠一次契约复审档复核。
@@ -125,7 +128,6 @@
125128
- 凡我觉得可以这样的一律降到第三区;⛔ 不把假设写成裁决。
126129
- 标准非协商条款 ⛔ 不抄进派发词:hook 已机械强制段与 os-dev.md 已载通用段砍掉。
127130
- ⛔ 不砍卡类特有约束:ADR 类 draft-only、tier 推导引用、棘轮实况、释义纪律。
128-
- 无条件条款只住角色文件,冲突时它胜、错了修那里,⛔ 不靠派发词临时覆盖。
129131
- 终报要求随派发词带一句:只收机器可核字段(gates / line_budget / deviations / files_changed)。
130132
- 派发令恒带 `Writes:` 行:PR 只经中继 `pr_create`;评论/标签/正文只经中继写工具;两数都报。
131133
- ⛔ GitHub MCP 写:`create_pull_request`、`update_pull_request`、`issue_write`、`add_issue_comment` 等。
@@ -163,7 +165,6 @@
163165
- 判死只有三类依据:探针回包表明已死;宿主明确回报 stopped;超过本车道基线且连续静默。
164166
- 基线 = 本车道实录派发 → 推分支/开 PR 的端到端耗时,三五单即可用,⛔ 非本文任何常数。
165167
- `mode:cloud` 的 ~2h 静默是本轮收集边界(记 `blocked` 移步下轮),也不是判死。
166-
- 停摆永不自愈:携带任务中途状态的完成通知本身就是停摆信号。
167168
- 报告末句是意图不是结果 = 停摆非完成:当刻 SendMessage 续派,⛔ 不读作交付、不判死。
168169
- 停摆 ⇒ 立刻 SendMessage 附前台执行姿态句,⛔ 不等任何静默阈值(阈值是给没有回答的)。
169170
- 通知重放先算身份再读内容:与已验收那份同身份 ⇒ 记重放即结束。
@@ -177,7 +178,6 @@
177178
- 逐项判据展开在 `references/review-checklist.md`,每份报告对着它过。
178179
- 报告或复核见涉 cloud ⇒ 整卡 `Release:`+`pm:retriage` 转 cloud 车道,读点留卡;⛔ 不拆半边。
179180
- 改到已有 `.changeset/*.md` 的 PR ⛔ 不打 `skip-changeset`;确认取同 head 达档 PASS 或维护者原话。
180-
- 报告在草稿 PR 时点到达,CI 收敛读数只属于复核侧:gate `in_progress` 是诚实读数。
181181
- 绿色输出≠ 该绿证明了被测风险:拒收断言、全绿方向与时序、pin 翻转、边界后收益。
182182
- 触 `skills/**` 的 PR 加问整包价值密度:从整包加载的客户 agent 座位读,⛔ 不从作者座位读。
183183
- 超派发预算或小功能大扩写 ⇒ REWORK,⛔ 不因已经写好了放行。

‎.claude/skills/pm-dispatch/references/seat-lifecycle.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
- 标题只放慢状态,快状态留在说明段。
2727
- 维护者强制接管令取席位、队列、在飞卡、未起工卡与待落地 PR;⛔ 不等原认领者注记。
2828
- 子代理 dev 的返回消息、探活与续派只在派发会话;落地或 `Release:` 后归新席位。
29-
- 范围与常设承诺是岗位说明不是状态,版本化在 `references/lanes/<lane>.md`。
3029
- 贴内只放指向车道文件的指针,升级走技能 PR,⛔ 不手抄接力。
3130
- 写侧刷新点 = 轮次边界;中途状态由卡上 claim 评论与指针行、PR 上 `## 席位核对` 承载。
3231
- 读侧只读贴正文 + 晚于正文最后编辑的评论;刷新前读完评论、回执未读敲门,再刷。
@@ -38,6 +37,7 @@
3837
- 竞态三招:动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。
3938
- 收班 = 状态 flush + 在飞默认交回队列、不等落地;派发口径失效,简报 ⛔ 不列作继承裁决。
4039
- 坐席同笔:建自绑巡查 routine、开信箱并订阅、存根记 `Patrol:` 与 `Mailbox:`、发 `seat-online`。
40+
- 分诊席与车道席会话 effort 恒 `high`;坐席时低于即登记行注明,请账号主人以 `high` 重开。
4141
- 收班同笔删 routine、关信箱、发 `seat-offline`;强制接管者代发 `seat-online`(`project-forms.md`)。
4242
- 离任留守只写点名的已 ACCEPT 待队列或待人批 PR,⛔ 不读队列、不新派发、不碰未点名卡。
4343
- 换班报告默认零建议,只收三类:原则错/缺、可机械化项、平台事实变化。

‎.claude/skills/pm-dispatch/references/triage-duties.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
- 证据 = 卡上引具名失败 check/run、复现读数或 pin 测试;记录照分诊格式贴卡,请分诊复审。
3333
- 行首 `Ruling-ref:` 引本例外裁决原话;⛔ 不改 `domain:*`、不定 p0(归 main-red)、不碰人工地板。
3434
- 分诊每轮读上轮以来新贴的自分诊记录,逐条回复确认或改判;复审前席位定级有效。
35+
- 分诊定级轮读车道 `Suggested-grade:` 行:是输入不是定级,确认或改判,不采纳给理由。
3536
- 分类动作每张三选一,外加一个修复通道;裁定写方向、给六态之一。
3637
- 停 `pm:blocked` 同笔在卡正文写行首 `Blocked-by: #N`(issue/PR 号;full-run 卡写评论),散文不算。
3738
- 方向在 ADR/本卡裁决/不可重裁规则:贴 `check-prior-rulings.mjs` 的 `Prior rulings read:` 行,或不点。
@@ -95,7 +96,6 @@
9596
- ①只翻 report-only,不删门不跳测;②同笔送待决策汇总入下批,附两红 run;③不同意即翻回。
9697
- 条件:席位验收评论逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排。
9798
- 机械边界测试(条款②判据):改动扩大接受集或公开面 ⇒ 是;拉回已声明契约 ⇒ 否。
98-
- 轮次报告设呈裁清单专节(卡、推荐、所引权威),⛔ 无代裁清单、无追认表。
9999
- 回翻条款:实施中发现契约终究要动 ⇒ dev 停手,卡回决策箱,⛔ 永不静默重裁。
100100
- 请示纪律:方向性授权覆盖整条执行链一并做完,⛔ 不逐项回问。
101101
- 汇报只在里程碑、真阻塞、被问到时;中间状态与限流/重试类细节只进座位贴和触发器。

0 commit comments

Comments
 (0)