Skip to content

T2 手机创建云群并收发持久文本 #3

Open

Description

@DoodleBears

状态:HTTP 持久频道、组织邀请和单频道访客切片已合并并有 UAT/native 证据;WebSocket、活动连接撤权及完整成员/平台验收未完成。 Human 于 2026-10-18 授权合并既有 Draft;不授权 Prod 部署。

Parent

#1

What to build

已登录的 Human 在自己有权管理的组织中,通过手机创建 Cloud Group Channel,使用另一客户端/CLI 收发文本。关闭再打开或断线重连后仍看到已确认消息。

所有业务走生产目标 owner、持久存储及公开接口;同时交付所需界面、CLI 与回归证据,不交付隔离的横向层。

Acceptance criteria

  • 手机可建群、查看成员和发送/读取文本;CLI 可执行同样操作。组织建群政策与群访问权限由服务端检查。
  • Org DO 的目录与 Channel DO 初始化使用同一稳定操作身份,失败重试不会产生第二个群;未完成初始化不展示为可用群。
  • Cloud Channel 持久保存群、成员、消息与序号。消息同键同内容返回既有结果,异内容冲突;提交后才发送回执。
  • HTTP 历史/游标与休眠 WebSocket 经过同一身份和群校验;重连后补齐,UI 区分待发、已提交、失败。
  • 另一个组织、非群成员、伪造作者、越权游标都被拒绝;组织列表不泄露未获权私有群;新加入身份默认只有加入后历史。
  • WorkOS 失效事实传到活动群,现有连接也检查过期/撤权;首次可见路径即含拒绝行为,不把全部授权留到最后测试票。
  • 实例未配对电脑仍可聊天。最小 schema 迁移及重启持久化可复现,连接状态不假装是任务执行状态。
  • 公开 API/WS 回归、CLI 实跑与真实手机 Human QA 通过;保留既有本地 Host 功能。

群角色设计约束:Human/Agent 的身份类型与群主/管理员/成员角色分离,不把群主归属硬编码为 Human。当前切片仍验证既定 Human 建群路径;Agent 群主授权、撤销/接管及入群申请审批放到 T1–T5 之后的群管理切片,验收目标见 spec §8。不提前发放新的管理权限。

Blocked by

#2 — T1 完成并通过 Human QA。

TOB 公开仓库及规划迁移已获授权;本任务仍未启动,不授权实现、部署、配置 WorkOS、发信或收费。

合并检查点 — 2026-10-18

TOB #17–24 已依次合并,main 44dbb505ae6ba36a82372d7e11f3c356e3651931;DeepSeekBot #2103/#2121/#2131/#2138/#2146/#2150/#2152/#2154 的原始提交由 #2157 整合,main f9ed710b5a718526cc97a30583af80fa14e28424。上述最新 Human 授权取代历史“暂不启动/不合并”描述;未运行的验收仍不算通过。此次没有部署或发布,Prod 未变。

HTTP 持久频道、组织邀请和单频道访客切片已合并并有 UAT/native 证据;WebSocket、活动连接撤权及完整成员/平台验收未完成。 本总任务保持开放。

Activity

  1. DoodleBears commented on Oct 17, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9 (not a DSH Session)
    • Issue scope: first owner-created organization channels and persisted text through public API/CLI/mobile. Then invitations, Agents and two isolated Hosts through Cloudflare UAT under the Human's explicit active goal. No complex visibility; direct-channel guests will not gain full organization access. The phrase “invite group channel” remains awaiting clarification.
    • Branch: codex/3-cloud-channels
    • Started: 2026-10-17 22:32 UTC
    • State: active

    The Human's newer autonomous UAT goal authorizes this next slice and supersedes the original not-started/admin-only scheduling restriction. Stack on unmerged #18; do not merge, touch Prod, or claim T1 complete. T1 revocation/event gates remain open; WebSocket active-session revocation must be qualified before treating the full T2 ticket as complete. First prove mobile create/multiple channels/text plus independent CLI and denial/retry evidence, then expand the remaining T2 transport gates.

  2. DoodleBears commented on Oct 17, 2026

    @DoodleBears
    ContributorAuthor

    UAT HTTP channel sub-slice verified

    Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9; the overall goal remains active.

    • Service #19: runtime b26150224a60808d89daf7e9cd8863faf26ed75f, documentation head 46b04ec. Mobile #2138: runtime 5d2ef0fe8, evidence head 29785b357.
    • Actual shared iOS Simulator creates two channels; formal CLI agrees, exchanges text, and reads back all seven exact message bodies/sequences. Current owner→member downgrade refuses creation even with an old owner token; read/send remain permitted. Synthetic owner restored. Cross-user and wrong-organization access refused.
    • Phone cold restart, refresh and remote sign-out/local clearing pass; independent A/B CLI sessions remain usable. Six theme/text-size cases passed after keyboard and dark-contrast repairs. Original failures and stale-Metro recheck are retained in the evidence README. Eight PR images render on GitHub.
    • 30 service workerd + 23 Node/CLI + 20 mobile focused checks and runtime-head CI passed. Evidence-only-head CI is still running. Shared window released and settings restored.
    • This is not full T1/T2 completion: invitations, direct guests, Agents, WebSocket/event revocation and two-Host cloud interaction remain. No Android, physical-device or Human visual acceptance, Prod or merge.

    Next bounded claim: organization owner A invites verified user B as member; B accepts, switches organization, sees existing channels and exchanges only allowed messages through public API/CLI/mobile. Branch codex/3-org-invitations stacks on unmerged #19. Direct guests and Agent credentials follow separately. Existing T2 claim remains active under the explicit UAT goal.

  3. DoodleBears commented on Oct 18, 2026

    @DoodleBears
    ContributorAuthor

    UAT invitation slice outcome

    Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9 — bounded slice handed off for review; larger goal remains active.

    • Service Draft #20, runtime b6b717d044ff4a787de287c31d2029025bbbb7f9, D1/Org/Channel 4/4/1; current docs head 1f07075. Real API/CLI and shared iOS Simulator A→B invitation/acceptance passed.
    • Mobile Draft #2146, runtime acfbc581b805a0a6b47687b7f5c23c2ca363cfcf; reviewer evidence 93a332ab6. B sees the same four channels, cannot see seven pre-join messages, sends message 8 read by owner CLI. Member channel-create/invite/org-update refusals are real server checks. Native revoke leaves no membership; revoked recipient cannot accept.
    • Refresh, cold restart and independent logout passed. Six owner-form size/theme cases preserve draft/focus; maximum keyboard submit and scroll-to-revoke were operated. Eight PR images visibly loaded; three recordings and corrected driver failures are published in the PR evidence README.
    • Service latest docs CI passed; mobile runtime CI passed, latest evidence-only head CI is still running. No actual email delivery, new Hosted AuthKit, Android/physical/Human, screen-reader or native lost-response injection claim.
    • Shared device window released. No Prod changes or merge. T1/T2 remain open: identity-event/rejoin gates, direct channel guests, Agent admission/interaction, WebSocket and two isolated Hosts through UAT are still outstanding. Group-channel invitation/bridge semantics remain unanswered.
  4. DoodleBears commented on Oct 18, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — direct channel guests

    • Agent: Codex
    • Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9 (not a DSH Session)
    • Scope: owner invites verified ordinary B to one channel; B accepts through public API/CLI/mobile, can use that channel but cannot select/read its organization or sibling channels. No WorkOS organization membership is created. Revoke and re-invite preserve current grant/history boundaries.
    • Branch: codex/3-channel-guests, stacked on unmerged feat: organization member invitations through API and CLI #20.
    • State: active under the Human's autonomous UAT goal; no Prod or merge.

    Channel DO owns invitation/grant and the join sequence. D1 is a bounded recipient lookup projection, never an authorization source; retries repair incomplete indexing. First end-to-end target uses existing verified A/B synthetic users. New-account delivery, Agent credentials, WebSocket and group-channel bridging are not silently substituted into this slice. Full T1/T2 remains open.

  5. DoodleBears commented on Oct 18, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — invitation journey

    • Agent: Codex
    • Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9
    • Scope: recipient-authorized invitation preview and portable invitation links for the mobile join path; public API and CLI parity. Existing recipient binding, acceptance and revocation remain authoritative.
    • Branch: codex/3-invitation-links
    • State: active. UAT only, no Prod; new slice remains unmerged pending acceptance.
  6. DoodleBears commented on Oct 18, 2026

    @DoodleBears
    ContributorAuthor

    UAT API/CLI tracer is verified at service f10437bfbe46c4cbcbfb71bc6b599e9551669051 (CI, sanitized evidence): recipient preview does not join; wrong account/anonymous refused; landing reveals no destination; mismatched origin refused before sending credentials; revoked acceptance denied; no organization membership or sibling access. Schemas remain D1/Org/Channel 5/4/5. No Prod or authentication-setting change.

    Companion mobile #2169 is Draft. Native invitation acceptance, pending-target restart recovery and before/after screenshots are still pending the assigned Simulator window; real camera QR, QR display/save and workspace drawer remain separate unfinished gates. T1/#3 stays open.

    Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9.

  7. DoodleBears commented on Oct 18, 2026

    @DoodleBears
    ContributorAuthor

    Assigned Batch21 iOS Simulator acceptance is now verified and published in DeepSeekBot #2169. Evidence, recording, first failures and limits.

    • Runtime 1a2c1c385fd842958a078da05bb85c841d69934e; UAT service f10437b, schemas 5/4/5. Runtime CI passes. Screenshot links render in the PR; video is published. Evidence/doc-only heads have their own CI.
    • Deep-link recipient preview, pending cold restart, explicit guest accept/direct channel, one native message and accepted cold reopen pass. CLI independently proves no organization membership, sibling denial and exactly one committed message.
    • Revoke blocks the old session and removes the guest channel. Phone refresh/logout revokes only its independent synthetic session, rejects latest refresh and preserves other sessions. Trusted config retained; own private fixture removed, original display settings restored, driver/Metro stopped, shared window released.
    • Native QA found and fixed two issues: misleading saved-session label; absent cold-start identity cache hiding the loaded channel. The latter has a failing-before/passing-after regression (32 client tests and typecheck pass); original captures retained.

    Still open: sender native copy/share, new-instance trust and Hosted AuthKit return carrying an invitation, real camera/Android; QR rendering/save, unified workspace drawer, organization-wide Agents and remaining umbrella gates. Synthetic login does not prove interactive Hosted AuthKit. No Prod or new PR merge. Task codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9.

  8. DoodleBears commented on Oct 18, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — unified workspace drawer tracer

    Task codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9; mobile branch codex/2161-workspace-drawer, stacked on #2169. Service companion branch codex/3-guest-workspace-projection, stacked on TOB #25.

    Reuse the existing left drawer for Computers + Cloud workspaces. Merge actual organization memberships with server-authorized guest-channel organization identity, keyed by instance/organization. A channel guest sees the organization entry and only its granted channels; membership takes precedence without duplicate entries. Moving between cloud and computer preserves their independent authority. Include public CLI readback, pagination/retry/revoke checks and assigned native evidence. No new visibility model, Prod or merge. Existing invitation sharing/authentication acceptance gaps remain open.

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

    agent:activeAn agent task has an active scoped work claimfeature:messagingMessaging module and external providersready-for-humanRequires human implementationscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions