Skip to content

console-ai UX:三轮真实浏览器魔法流程测试的体验问题清单(登录无声失败/agent 蓝图感知/转介等待/i18n 混杂等) #2458

Description

@os-zhuang

2026-07-13 三轮完整魔法流程真人浏览器实测(真实注册 → 建组织/环境 → SSO → ask 拒绝转介 → handoff → 蓝图 → 搭建 → 发布,本地 run-stack 栈 + 真实 LLM)中观察到的用户体验问题,按优先级合并归档。管道级缺陷(handoff 吞发 #2450、上下文携带)已另行修复合并,本清单只留体验层问题。纯开发环境噪音(rig 陈旧 console 服务源等)不在此列。


🔴 高优先级

1. 登录提交"无声失败"

Cloud 登录页(:4900,SSO 跳转后)输入凭据点击「登录」可能毫无反馈:不跳转、不报错、按钮无 loading 态;env 登录页 console 里堆着 HTTP request failed 但 UI 完全安静。实测中连续复现,真实用户只会反复点击或放弃。
建议:提交按钮 loading 态;失败时 toast/表单错误;fetch 异常浮出 UI 而非只进 console。

2. agent 无视同会话里"待确认的蓝图"

蓝图 A(库存管理)在同一会话里 Awaiting Approval,二次 handoff 的新需求 B(加供应商)自动发入后,agent 回答"我这边暂时没检测到已存在的库存管理应用……请告诉我应用名"——让用户复述它自己两条消息前刚提出的方案。
建议:build agent 蓝图技能加规则:存在待确认蓝图时,新增需求默认提议"并入该方案一起确认"。
归属:ADR-0057 Amendment A1(PR #2457)的 A1.c 阶段(绑定注入 + pending-blueprint amend 规则)正是此修复的结构化形式,cloud 侧改动。

3. ask 拒绝转介的等待感

"帮我搭 XX" → "Open in Builder →" 卡片出现约 20 秒,期间只有空白的"执行过程"占位文字。对一个本质是"分类+转介"的回答,又慢又安静。
建议:(a) 占位换成骨架/打字指示;(b) 卡片在 suggest_builder 工具调用到达时即时渲染,不等完整散文;(c) 评估 ask 面对 build-shaped 请求的短路径提示词。

🟡 中优先级

4. 中英文混杂集中在魔法流程关键节点

中文界面里:"Open in Builder →"、"Suggest builder — Completed"、"Propose blueprint — Awaiting Approval"、"Not yet built"、"TODAY"、"Build Doctor"、"Your apps"、"Needs your attention"。拒绝卡与蓝图卡恰是英文最密集处。
建议:跑一遍 i18n 覆盖率报告,优先补 AI 面字符串。

5. 用过的 "Open in Builder →" 卡片不失效

ask 线程积累多张卡片,旧卡仍可点击并把过时的 prompt 再次 handoff。
建议:点击后卡片转"已打开 ✓"灰态,或仅最新一张保持可用。

6. 待确认蓝图缺少全局提醒

蓝图 Awaiting Approval 时离开 build 面,任何地方都没有角标提示。产品决策是"自动发送、不做阻断横幅",但被动角标(FAB/P3 dock 上的小红点)不属于阻断,值得做,且是 P3 dock 的顺手活。

7. Enter 不发送

聊天输入 Enter 只换行,需 ⌘↵ 或点按钮——与主流聊天工具肌肉记忆相反,⌘↵ 提示字号极小。
建议:Enter 发送、Shift+Enter 换行(或可配置)。

🟢 低优先级 / 产品策略

8. 免费额度撞墙无预告

400K token/天,几次完整构建即耗尽,用户只在发送失败时才知道。建议 AI 面加用量指示。

9. console 首屏加载偏大

魔法流程"第一印象"环节的加载等待;bundle 有拆分空间(Bundle Analysis 可佐证)。


证据来源:三轮实测的截图与网络捕获在 2026-07-13 的验证会话中;#2 的完整复现路径见 #2450(已修管道,agent 行为层遗留在本条)。
关联:ADR-0057 Amendment A1(PR #2457)、epic #2409、#2450(已关)、#2449/#2452(已合并)。

Activity

  1. os-zhuang commented on Jul 13, 2026

    @os-zhuang
    ContributorAuthor

    Batch 1 shipped (PRs open): A1.a binding chip + UX#5 latest-only handoff cards + UX#7 honest send hint — #2461; UX#2 pending-blueprint amend rule — objectstack-ai/cloud#823. All four live-verified in the magic flow. Deferred (this issue): #1 login silent-failure, #3 ask-decline skeleton, #4 i18n sweep, #6 global pending-blueprint badge (P3 dock), #8 usage indicator, #9 bundle split.

  2. os-zhuang commented on Jul 14, 2026

    @os-zhuang
    ContributorAuthor

    Status update (2026-07-14). Since batch 1, more items shipped:

    Still open in this issue: #3 ask-decline skeleton, #4 i18n sweep (partially landed via #2489/#2491), #6 global pending-blueprint badge (now feasible on the canonical dock), #8 free-tier usage indicator (needs a backend usage API), #9 first-paint bundle split.

  3. os-zhuang commented on Aug 1, 2026

    @os-zhuang
    ContributorAuthor

    第 4 条(中英文混杂)在最新 pin 上仍然复现,并已定位到三个不同的根因

    2026-08-01 又跑了一轮完整魔法流程(本地 run-stack,objectstack@eb4204b240c5 / objectui@620f61861d42,free plan,真实 LLM),第 4 条列出的字符串一个不少地重现:Propose blueprint、Awaiting Approval、Not yet built、Apply blueprint、Verify build、Describe object、Build Doctor、Switch app、Collapse to side panel。

    顺手把根因挖了一下——不是一个疏漏,是三套互不相干的机制,分开修才修得干净:

    1. 工具卡状态徽章:整张表硬编码,压根没接 i18n

    packages/plugin-chatbot/src/elements/tool.tsx:44-53

    const getStatusBadge = (status: ToolUIPart["state"]) => {
      const labels: Record<ToolUIPart["state"], string> = {
        "input-streaming": "Pending",
        "input-available": "Running",
        "approval-requested": "Awaiting Approval",
        "approval-responded": "Responded",
        "output-available": "Completed",
        …

    没有 t(),任何语言下都是英文。界面上能看到「已完成」是因为另一条路径(ChatbotEnhanced/AiChatPage)自己localize了一部分——所以同一屏里会出现「Awaiting Approval」和「已完成」并排,这个不一致本身也是这条造成的。

    2. 工具卡标题:由工具机器名派生,天然是英文

    packages/plugin-chatbot/src/ChatbotEnhanced.tsx:1116 / :1733 → humanizeToolName(tool.toolName),propose_blueprint → Propose blueprint。这类标题只能靠按工具名查本地化显示名来解决,humanize 再怎么改也出不了中文。

    3. Not yet built:翻译键存在,但所有 locale 都没有这一条

    packages/app-shell/src/console/ai/AiChatPage.tsx:2187

    planDeferredLabel={t('console.ai.planDeferred', { defaultValue: 'Not yet built' })}

    grep -rn "planDeferred" packages/i18n/src/locales/ → 零命中(zh.ts 在内的 11 个 locale 都没有)。所以 t() 永远回落到 defaultValue。这一类"有键无翻译"的最好办法是让 key-parity 测试覆盖到(packages/i18n/src/__tests__/all-locales-key-parity.test.ts 已经在测 locale 之间的 parity,但测不出"代码里用了、locale 里从来没有过"的键)。

    关于位置:这几处密集出现的地方正好是蓝图卡和确认卡——也就是新用户第一次见到产品"在干活"的那一屏,优先级建议比「中」再高一档。

    另:cloud 侧还有两处硬编码英文(搭建成功后的整段「下一步」引导、免费版新建环境的付费墙弹窗),根因在那个仓库,已单独记为 objectstack-ai/cloud#959,与本条互补。

  4. xuyushun441-sys commented on Aug 3, 2026

    @xuyushun441-sys
    Contributor

    维护者裁决(2026-08-03)——按归属分流

    摘 needs-user-decision(无未决判断,余下是分流执行)。


    Generated by Claude Code


    Generated by Claude Code

  5. claude commented on Aug 6, 2026

    @claude
    Contributor

    分诊:pm:on-hold(三要素见下)—— 承接维护者 2026-08-03 裁决,本轮只补状态标签并刷新剩余项。

    2026-08-03 的裁决把本单按归属分流后摘掉了 needs-user-decision,但没有换上任何 pm:* ⇒ 此后每轮 sweep 把它当未分诊新单重捞。裁决本身写得很清楚:「排 v17 后 polish 批,届时拆成单一 scope 子单再派(本单是清单,⛔ 不整单派发)」—— 这是一个已做的决定,对应 pm:on-hold,不是 needs-user-decision。

    hold 三要素

    • 日期:2026-08-06(承接 2026-08-03 维护者裁决);
    • 理由:本单是清单,不是可派发单元;裁决已排期 v17 后的 polish 批;
    • 重启条件:v17 发布后,按裁决拆成单一 scope 子单逐条派发(⛔ 不整单派发)。

    剩余项刷新(过时前提检查 —— 9 条里 4 条已交付,勿重做)

    条目 现状
    #1 登录无声失败 ✅ 已交付(#2468)
    #2 蓝图感知 ✅ 已交付(cloud#823)
    #5 旧卡失效 / #7 Enter 发送 / A1.a 绑定 chip ✅ 已交付(#2461)
    #6 待确认蓝图角标 ⚠️ 前提已变更:裁决写「挂 P3 dock(#2412 已批),随 P3 顺手做」—— 而 P3 已全部落地、dock 已成 canonical(ADR-0057 Status 行自陈 IMPLEMENTED IN FULL,#2412 本轮已关闭)。⇒ 该条不再有依赖,拆单时可直接落 dock,是剩余项里最容易的一条
    #3 转介等待 🟡 仍在;cloud 半边(ask agent 行为 + suggest_builder 渲染时机)
    #4 i18n 混杂 🟡 仍在,部分经 #2489/#2491 落地;根因已定位到三套机制,见下
    #8 免费额度指示 🟡 仍在,需后端 usage API(跨仓前置)
    #9 首屏 bundle 拆分 🟡 仍在

    ⚠️ 给拆单时的一条建议:第 4 条(i18n)是剩余项里规格最完整的,建议领衔。 2026-08-01 的复测评论已把它拆成三个互不相干的根因,每个都带文件与行号,基本可以直接变成三张子单:

    1. packages/plugin-chatbot/src/elements/tool.tsx:44-53 —— 工具卡状态徽章整表硬编码,完全没接 t();同屏「Awaiting Approval」与「已完成」并排的不一致就是它造成的;
    2. ChatbotEnhanced.tsx:1116 / :1733 的 humanizeToolName(tool.toolName) —— 标题由工具机器名派生,结构上出不了中文,只能改成按工具名查本地化显示名;
    3. AiChatPage.tsx:2187 的 console.ai.planDeferred —— 有键无翻译(11 个 locale 零命中),永远回落 defaultValue。⚠️ 这一条带一个门禁半边:all-locales-key-parity.test.ts 测的是 locale 之间的 parity,测不出「代码里用了、locale 里从来没有过」的键 —— 那是一类可复用的门禁缺口,建议单独成子单,价值大于单条翻译。

    ⇒ 拆单时 #4 应按三张子单而非一张,三个根因的修法互不相同(接 t() / 换查表 / 补键 + 补门禁)。

    跨仓归属(记录待办,⛔ 本轮不立单):裁决把 #1/#2/#3 判给 cloud 侧并注明「留待有权限的 PM 或维护者转交」。#1、#2 均已交付,⇒ 实际只剩 #3 的 cloud 半边需要转移。因整批已 hold 到 v17 后,现在立 cloud 单只会在另一个仓生成一条同样 on-hold 的条目,徒增入口 ⇒ 转移动作随拆单一并执行(届时按跨座位转移协议:cloud 立单 + Part of objectstack-ai/objectui#2458)。本条已在本轮收尾简报中点名,便于追踪。ℹ️ cloud 侧另两处硬编码英文已由 cloud#959 独立跟踪,与本单互补,无需重复立单。

    查重:三仓搜 planDeferred / humanizeToolName / Awaiting Approval / i18n 覆盖率 —— 未发现重复派发入口;关联 epic #2409(closed)、#2412(本轮关闭)、#2450/#2449/#2452(已合并)、cloud#959(互补,open)。

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  6. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    Collaborator

    第 4 条(中英文混杂)的进展记录,不改本单状态(仍 pm:on-hold),只把已经落地的部分对上号 —— 本单当时的建议就是"跑一遍 i18n 覆盖率报告,优先补 AI 面字符串",那份报告后来以门禁形式落地(#3530),存量账在 #3546。

    第 4 条点名的字串,现在的归属:

    本单点名 归属 状态
    Not yet built console.ai.planDeferred ✅ #3546 切片四已回填十包(zh = 尚未搭建)
    TODAY console.ai.group.today(侧栏日期分组,大写来自 uppercase 样式) ✅ #3546 切片四已回填,整个 console.ai.group. 模板 key 家族五个分组全补(今天/昨天/过去 7 天/过去 30 天/更早)
    Your apps、Needs your attention home.* 命名空间 ⬜ 仍在 #3546 的棘轮里(home 还欠 5 个 key),留给后续切片
    Open in Builder →、Suggest builder — Completed、Propose blueprint — Awaiting Approval、Build Doctor 不是本仓语言包的缺 key ⬜ 前两个是 agent/工具名与卡片文案(cloud 侧 service-ai-studio 产出),Build Doctor 同类;#3546 的守卫扫不到它们,需要单独定位

    顺带说明为什么这一类能静默几个月:all-locales-key-parity.test.ts 只比键名集合,十个包一致地都没有某个 key 时它是绿的;#3530 的守卫(调用点 → en)才是能看见"key 压根不存在"的那道门。第 4 条观察到的现象与该守卫首跑量出的 258 个缺 key 是同一件事的两端。

    关联:#3546(存量账,切片一~四已清 190 个 key + 1 个前缀家族,余 68 key + 3 前缀)、#3530(门禁本体)。


    Generated by Claude Code

  7. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    Collaborator

    第 4 条(中英文混杂)的进度与一处前提更正** —— 来自 #3546 切片六(PR #3868,perm + home 两命名空间 14 个缺失 key)。

    先说更正,因为派发时的假设错了:Your apps 与 Needs your attention 并不是 #3546 的欠账,它们十包早已译好,不在守卫的缺 key 清单里,也不在棘轮里:

    home.yourApps           zh 我的应用 / ja あなたのアプリ / ko 내 앱 / de Ihre Apps / fr Vos applications
                            es Tus aplicaciones / pt As suas aplicações / ru Ваши приложения / ar تطبيقاتك
    home.actionCenter.title zh 待办事项 / ja 対応が必要な項目 / ko 확인이 필요한 항목 / de Erfordert Ihre Aufmerksamkeit
                            fr Nécessite votre attention / es Requiere tu atención / pt Requer a sua atenção
                            ru Требует вашего внимания / ar يتطلب انتباهك
    

    所以这两条在 2026-07-13 实测时看到英文,原因不是缺 key(除非当时会话语言没切过去)。切片六没有、也不需要覆盖它们。

    第 4 条八个字串的逐条现状(实测十包)

    字串 现状
    Your apps ✅ 十包已译(home.yourApps)
    Needs your attention ✅ 十包已译(home.actionCenter.title)
    Not yet built ✅ 十包已译(console.ai.planDeferred,zh 尚未搭建)
    TODAY ✅ 十包已译(console.ai.group.today,zh 今天 —— #3546 切片四补的 console.ai.group. 前缀家族)
    Propose blueprint — **Awaiting Approval** 后半 ✅ 已译(console.ai.toolAwaitingApproval,zh 等待确认)
    Suggest builder — **Completed** 后半 ✅ 已译(console.ai.toolCompleted)
    Propose blueprint / Suggest builder(工具名那半) ❌ 结构上不可译 —— 见下
    Build Doctor ❌ 硬编码英文,没有 t()
    Open in Builder → ⚠️ 卡片标题是 prop,默认值 Build this in the Builder(ChatbotEnhanced.tsx:631),需单独核

    两个 #3546 结构上照不到的类

    #3546 的守卫(scripts/check-i18n-call-site-keys.mjs)只扫 t()/tt() 调用点的 key。第 4 条剩下的英文不在那个面上,所以把 #3546 的账切完也不会好:

    1. 工具名那半是从 wire 标识符机械推导的英文。 packages/plugin-chatbot/src/tool-display.ts 的 humanizeToolName('suggest_builder') → 'Suggest builder'(去下划线 + 首字母大写),ChatbotEnhanced.tsx:1116 / :1733 直接当标题用。于是中文界面里"Suggest builder — 已完成"这种半中半英是按设计产生的:状态那半走语言包,工具名那半走字符串变换。要治得给工具名一张可本地化的标签表(或让服务端下发 label),不是补 key 能解决的。
    2. Build Doctor 是硬编码英文,三处:AiChatPage.tsx:1945 的 aria-label="Build Doctor"、:1947 的 title={… 'Build Doctor — what actually landed?'}、BuildDebugDrawer.tsx:69 的 JSX 文本。aria-label 那处对读屏用户等同于 258 个 t() 调用点引用的 key 在任何语言包里都不存在(#3530 守卫首跑实测),其中 8 处直接把 raw key 渲染给用户 #3546 正文里 gantt.toolbar.refresh 那一类。

    这两类都还没有单独的单(已查重:仅 #3736 是"硬编码中文"的镜像问题,方向相反)。本条留在本单第 4 条名下,未另立单以免与它重复 —— 若要派发,建议按上面两类拆成两张可执行的单,因为修法完全不同。

    切片六实际覆盖的(与本条相邻但不重合)

    Home 待发布横幅 / 草稿预览条共用的发布路径上,5 条 toast 此前十语不可译(英文可见):Nothing to publish.、Published, but verification found problems.(ADR-0038 L3 探针)、Published, but some sample data failed to load.、Published & verified — {{count}} sample row(s) live.、Authoring check: {{count}} capability reference(s) resolve nowhere.(ADR-0066 ⑨)。另 9 条是权限集记录的授权面摘要(perm.facet.*)。详见 PR #3868。

    关联:#3546(#2458 第 4 条建议的"跑一遍 i18n 覆盖率报告"就是 #3530 的守卫 + 该单的账)、#3868(切片六)、#3736(硬编码中文,镜像问题)。


    Generated by Claude Code

  8. claude commented on Aug 14, 2026

    @claude
    Contributor

    重启条件已达成 —— pm:on-hold → tracking。

    v17.0.0 is GA. Measured on the npm registry at 2026-08-14 08:3xZ:

    @objectstack/spec   latest = 17.0.0   published 2026-08-14T07:59:51Z
    @objectstack/cli    latest = 17.0.0   published 2026-08-14T07:59:10Z
    @objectstack/core   latest = 17.0.0   published 2026-08-14T07:59:15Z
    create-objectstack  latest = 17.0.0   published 2026-08-14T07:59:14Z
    

    本卡记录的重启条件是「v17 发布后,按裁决拆成单一 scope 子单逐条派发(⛔ 不整单派发)」。

    照此处理:摘 pm:on-hold,落 tracking。⛔ 没有落 pm:queue —— 整单派发是本卡明令禁止的,而 pm:queue 就是「可整单捞取」的意思。本单现在的角色是子单的来源与进度视图。

    ⚠️ 一并提示:本卡正文记的 cloud 侧三条(登录无声失败 / 蓝图感知 / 转介等待)当时因无 cloud 仓权限未能转交。按 #7165「卡片放在修复落地的仓」的裁决,拆解时这三条应直接立在 objectstack-ai/cloud,不要留在本单里。

    Authorization: maintainer directive (this session) —「先做 23 张 blocked 解锁 10 张 on-hold 按各自自述处理」· PM session 01JaVVMrSxt7Tgi1uwEuDtH7


    Generated by Claude Code

  9. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Aug 23, 2026
  10. os-zhuang commented on Aug 23, 2026

    @os-zhuang
    ContributorAuthor

    Triage: domain:ui (lane only — tracking untouched). The findings are console-app UX defects from browser runs; every landing named is console/app-shell surface.

    ⚠️ As a tracking card its children are the dispatchable units, not this card. The lane label is for inventory visibility only.

    Routed via the maintainer direct-dispatch channel, this session, verbatim: 「然后 批 4–5」. PM session session_0124Qg8rLvpXnQDwCmpKUmaJ. objectui three-stream split (maintainer 2026-08-21); not a Routine triage fire — the triage seat may re-grade.


    Generated by Claude Code

  11. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    Contributor

    pm:retriage: grade this card, and plan its split — on the maintainer's order · director seat, summon #34, session_0195diSK6vuqxgiJ38VWBHb6 · 2026-10-06T00:12Z. ⛔ Not a claim, ⛔ not a dispatch; tracking and domain:ui stay.

    Provenance (three items). Who: the maintainer. Where: the live director chat of this summon (after marker objectstack#12708 comment 6005840354). Verbatim: 「分诊给 4 张没分诊的卡定级(不算交接文档 #7233): #6237、#4425、#2763、#2458。都是 8 月的旧卡,其中 #2763(审批 UI 重建)和 #2458(console-ai 体验清单)比较大,可能要拆卡。我可以去分诊那边挂请求。 2763 要等 v18再启动。」

    Asked of triage, one answer:

    1. priority:* and area:* for this card (it carries tracking + domain:ui only; the 2026-08-23 grade was lane-only).
    2. The split the 2026-08-03 ruling (5166018683) and the hold record (5203732659) already prescribe: single-scope children, never the list as a whole. The thread names the remainder: item 4 as two classes (a localizable tool-name table for humanizeToolName; the hard-coded 「Build Doctor」 strings, 5228506525), item 6 (the pending-blueprint badge on the canonical dock, now unblocked), item 8 (usage indicator, needs a backend usage API), item 9 (first-paint bundle split), and item 3's cloud half, which goes to objectstack-ai/cloud per bug(plugin-grid): a dependsOn lookup column is permanently uneditable in ObjectGrid — the inline editor supplies no dependent values, so the picker gates forever #7165 (5291320003). Items 1, 2, 5, 7 are delivered.
    3. Whether this card then closes as the children's source, or stays as their progress view.

    No hold is asked for this card; the maintainer's 「等 v18」 applies to #2763 only.

  12. added
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drives
    and removed
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Oct 6, 2026
  13. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    Contributor

    Path: ⑤ connect an Agent and have it complete a real business operation — the AI build surface | 缺项 | P5

    Triage answers pm:retriage (6006198254): split and closed completed as the children's source. area:ai. The two live remainders are now single-scope children, and the other items are delivered or have lapsed

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-06T01:03Z. ⛔ Not a claim, ⛔ not a dispatch.

    Triage: the remainder lands in packages/app-shell (layout/ launchers and console/ai/AiChatPage.tsx) and packages/i18n ⇒ domain:ui; rationale: every live item is a console surface.

    Each item, read on objectui main (fc3c2cc1cf)

    Item State Where it went
    1 delivered PR #2468
    2 delivered objectstack-ai/cloud#823
    5 and 7 delivered PR #2461 (ChatbotEnhanced.tsx: latest-only card, Enter sends)
    4, tool-name table delivered objectui#7254 and #7481. tool-display.ts looks up chatbot.tool.<name>
    4, 「Build Doctor」 delivered objectui#10900 and #10969. t('console.ai.buildDoctor*') in all locales
    4, third class: "Open in Builder →", "Approve & run" and "Reject", which 5228506525 flagged 「需单独核」 live #11667
    6, the pending-blueprint badge live #11666
    8, the usage indicator delivered layout/AiUsageIndicator.tsx mounted in ChatDock.tsx, fed by cloud's GET /api/v1/ai/usage (latest fix objectui#11662)
    9, first-paint bundle split no card See below
    3, the cloud half (the ask short path) no card See below
    • Item 9 has no measured target, and first-load size is already governed by performance-budget.yml and scripts/check-eager-closure-budget.mjs. A card without a goal would be a grade on nothing.
      • It re-enters on either of two conditions: a measured first-load regression, or a stated first-load goal the budget does not already enforce.
      • The sub-agent that measured this could not rule out, without a build, a static chain from App.tsx through AiChatPage into plugin-chatbot. That chain is the first thing to measure if it re-enters.
    • Item 3's cloud half:
      • The objectui half is delivered: a live thinking indicator shows during the ask wait.
      • objectstack-ai/cloud#1674 (closed 2026-08-27) gave makers one composer in which ask upgrades to build, so the remaining handoff reaches only users who cannot author.
      • Ask latency itself is already carried by objectstack-ai/cloud#1595 and objectstack-ai/cloud#2555 (both open). No new cloud card.

    Why close rather than keep it as a progress view

    Its only live items now live on two cards with their own grades. A list card that stays open would be graded on work it no longer holds. ⛔ The list is never dispatched whole, per the 2026-08-03 ruling.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drivesdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seattracking

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions