Skip to content

feat(manager-context): expose bound host surfaces and route execution identity - #7929

Merged
huangruiteng merged 1 commit into
mainfrom
codex/manager-agent-model-surface-20261102
Nov 3, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/manager-agent-model-surface-20261102

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Summary

  • Expose sorted public-safe host_surfaces (without host thread addresses) on each row of view=agents (loopx/capabilities/manager_context/discovery.py), and include host_surfaces in query matching so the Steward can discover agents by bound host surface (e.g. agy, codex-app, deepseek-harness-native) without reading host stores.
  • Extend readCodexExecutionIdentity (loopx/control_plane/runtime/execution_identity.ts) with opt-in allow_completed_turn: true (reporting active_turn_verified: false when the latest recorded Turn has finished) and public provider recognition for deepseek (DeepSeek), while keeping active-turn callers (pr-review) strict and never reading mutable SQLite preferences as execution evidence.
  • Add observe_codex_thread_execution_identity (loopx/codex_app_thread_activity.py) and attach execution_identity on resolved Codex peer routes in resolve_peer_host_route (loopx/control_plane/collaboration/peer_host_route.py, view=agent_route / resolve-peer-route) after post-observation registry verification.

Verification

  • node --test tests/control_plane_ts/execution_identity.test.ts tests/control_plane_ts/effect_runtime_handler_loading.test.ts (18 passed)
  • uv run --extra test python -m pytest -q tests/test_manager_agent_discovery.py tests/control_plane/test_peer_host_route.py tests/test_host_thread_activity.py tests/test_chat_manager_inspection.py tests/test_manager_ssh_evidence.py (240 passed)

… identity

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | model=gpt-6.1-sol | provider=OpenAI | runtime_reported | reasoning_effort=max

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

[P2] 在公开宿主标签前过滤私有值。 已接受的绑定包含路径形状的 host_surface,受限受众通过 view=agents 或公开 goal-portfolio agents 导出目录。 绑定 normalizer 只限制长度和空白,不证明 public-safe;新 host_surfaces 未过滤便进入目录、搜索和记录,路径形状的私有值被公开投影,基线没有该泄漏。 在构建搜索与输出集合前复用既有 public-safe 校验,屏蔽不安全宿主值并保留未知/不可公开的真实状态;不能把 compact token 当作公开安全证明。

动机 / Motivation

需要按宿主类型找到既有 Agent,并了解其最近执行模型的管理会话用户。 过去目录不能按绑定宿主搜索,已结束的 Codex Turn 也不提供执行身份;本 PR 从现有绑定与 rollout 元数据派生这些只读信息。 正常宿主搜索和已完成 Turn 的历史身份可读,严格活跃调用仍拒绝已完成 Turn;但新宿主集合会输出路径形状的私有绑定值。 本次不证明 Agent 在线、可执行、已采用指令或获得发送、启动、安装和合并权限。

改动思路 / Approach

绑定、provider IO 和 TS 元数据投影分工可保留;应在既有公开投影处复用安全校验,无需新增权限或目录服务。 当前 PR 的有用边界是受众内宿主发现与所选路由的历史执行证据。 目录复用 summarize_agent_binding_routes;身份仍由 readCodexExecutionIdentity 投影,Python 只发现 store。严格当前会话与跨 home 历史观察保留不同 scope,不能互相替代。 选择现有 owner 的显式变体可保持回滚与调用方可读性;此次不要求整个长期监督或管理协作 roadmap 一并完成。小补丁也要把真正使用者从入口到结果的路径接通,不能只凭字段存在或 suite 通过判断交付。

具体改动 / Changes

完整审查 9a1ad2d881bc7f9a6c0e8c7234ee2a5bbb75764c 相对实际共同基线 58a85d0aae8d35fdcbb75f5c93a25d38d5f5a8e9,7文件 +135/-21。 spec_ref=loopx/capabilities/manager_context/README.md,spec_revision=58a85d0aae8d35fdcbb75f5c93a25d38d5f5a8e9;修改前规范的 Manager-directed Core inspection 是独立验收依据。原受众和 locator_only 边界保留,但不公开私有宿主信息的要求 not_met。

  • agent_page 从完整受众注册目录读取绑定,在分页前建立 host_surfaces 和搜索索引;这里将“紧凑字符串”误当成公开安全字段。原 _normalized_host_surface 只校验长度和空白;已有 public-safe validator 会拒绝独立反例输出。
  • readCodexExecutionIdentity 只读选中 home 内匹配 thread 的有界 rollout 元数据;显式历史选项给已结束 Turn 返回 active_turn_verified=false,不读取 SQLite 的可变模型偏好。
  • resolve_peer_host_route 先观察,再复查 registry 与 exact binding;独立撤销/替换反例返回 ambiguous,未附执行身份或获得发送权。

对主干的风险 / Risks

独立运行五个完整 owning Python 模块 240 PASS、两个 TS 文件 18 PASS,TS typecheck、修改 Python 的 Ruff 和标准 premerge 6 direct /18 selected 通过。额外用同一合成 registry 做不可变 base/head 对照:42个注册项中正常宿主查询能找到最后一项;受限 ManagerInspection 与真实 goal-portfolio CLI 在 head 都输出路径形状的宿主值,base 均未暴露,现有 public-safe validator 对 head 输出拒绝。原宿主地址和跨 Goal 数据仍未输出,因此 finding 定位于新宿主标签集合,不能用其他字段安全掩盖它。

另用真实 SQLite/JSONL 与生产 TS reader 验证已完成 DeepSeek 身份 active=false、strict caller no_active_turn、可变模型偏好不参与身份;源 registry/store/rollout 字节保持。观察后替换合成 registry 的竞态被既有复查拒绝。该竞态只在隔离回调后注入变更,没有 live host、投递或模型调用;尚未把所有未来受众、跨 home 重复 thread 和安装后 UI 行为都证明。

没有查询、轮询或等待 GitHub CI。独立探针是合成隔离验证;尚无修复后 head,不能称 blocker 已解除。

我的整体评价 / Verdict

REQUEST_CHANGES。 在构建搜索与输出集合前复用既有 public-safe 校验,屏蔽不安全宿主值并保留未知/不可公开的真实状态;不能把 compact token 当作公开安全证明。 绑定、provider IO 和 TS 元数据投影分工可保留;应在既有公开投影处复用安全校验,无需新增权限或目录服务。 本次改动是既有 Agent 目录数据与路由证据投影,没有布局、样式或独立设置页面改动。 已安装宿主和模型消费未验证;未观察独立页面的布局变化。 维持原权限、停止条件和长期开放任务;不从本次审查推断模型采用或净收益。同账号按 COMMENTED 承载请求修改;不是正式 self-approval 或合并授权。

English verdict: REQUEST_CHANGES — exact head 9a1ad2d881bc7f9a6c0e8c7234ee2a5bbb75764c; the new host_surfaces projection publishes private-shaped binding values through both manager discovery and CLI export. Reuse public-safe filtering before search/publication and rerun the affected public paths.

Comment on lines +76 to +80
host_surfaces = sorted(
{
c["host_surface"]
for c in bindings["candidates"]
if isinstance(c.get("host_surface"), str) and c["host_surface"]

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] 在公开宿主标签前过滤私有值。 已接受的绑定包含路径形状的 host_surface,受限受众通过 view=agents 或公开 goal-portfolio agents 导出目录。 绑定 normalizer 只限制长度和空白,不证明 public-safe;新 host_surfaces 未过滤便进入目录、搜索和记录,路径形状的私有值被公开投影,基线没有该泄漏。 在构建搜索与输出集合前复用既有 public-safe 校验,屏蔽不安全宿主值并保留未知/不可公开的真实状态;不能把 compact token 当作公开安全证明。

@huangruiteng
huangruiteng merged commit 1b37e2e into main Nov 3, 2026
35 of 45 checks passed
@huangruiteng
huangruiteng deleted the codex/manager-agent-model-surface-20261102 branch November 3, 2026 07:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants