Skip to content

fix(goal): retain objective adoption for later registered peers - #7216

Merged
loopx-agent merged 1 commit into
mainfrom
codex/objective-peer-inspection
Oct 24, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/objective-peer-inspection

Conversation

@hhyykk

@hhyykk hhyykk commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

After a shared objective revision, a newly registered peer could receive goal_objective_review_required while remaining absent from the adoption inspector and Goal settings readback. The inspector only projected the revision's saved cohort and previous adopters. A registered @ alias could also be inspected but its explicit adoption was rejected by the objective record's older identifier check.

Carry the current member list from the resolved source registry into the existing TypeScript objective projector. It joins current observations with retained revision peers and adopter evidence. Keep the historical ID forms and accept the @ aliases already supported by Agent registration. A newly visible peer remains pending until its own work review and explicit adoption succeed.

Source: docs/architecture/rfcs/goal-outcome-refinement-v0.md, Current operating objective, at main c37ab4df9b00f86cd502f0d355b4d1a52bc97760. This closes a bounded R4 inspection/adoption gap. Intended base: main.

Author Declaration

Written by: model_agent — OpenAI Codex, GPT-6 family.

Accepted criterion Disposition Evidence
Later registered peers must review and adopt before acquiring work implemented Real File/SQLite inspect → explicit adoption → inspect, for ordinary and @ IDs; the objective guard stays blocked before adoption
Preserve original commitments, revisions and independent adoption implemented Readback preserves provider revision/objective digest; retained peers/adopters survive current membership observations
Existing operator/Agent entries expose the current objective and adoption implemented within the source boundary CLI and real global-App HTTP read the source registry despite an available shared-runtime decoy; the existing Goal settings list consumes that response

Self-check: reuse the existing Agent-ID normalizer and objective owner; no new module, operation, cache or dependency. Current registration is a read observation. It cannot register a peer, record adoption, revise an objective or grant execution. Provider-only callers without current registration retain their existing projection.

Scope And Continuation

Complete for source-aware inspection and supported later-peer adoption. The original cohort, old adopter evidence, admission/CAS and capacity limits remain. The paired RFC checkpoint records the boundary. Broader installed/model, cross-host and whole-Goal acceptance remain separate.

No state conversion runs. An objective record containing an @ alias needs a compatible ID reader during code rollback; preserve revision/adoption history. This restores a registered-ID case that the earlier objective codec rejected.

Checked 42 open PRs and their changed paths; none intersects this patch. The 176-file #6838 inventory was checked beyond the first page at its verified unchanged head. Existing #7202/#7213 caller-dispatch and #7196/#7197 context delivery work remain separate.

Validation

  • Reviewed head: ddde4ff. Linux, CPython 3.11.6, Node 26.12.1.
  • Run state: finished. Inputs: synthetic/public fixtures only. The full 66-Python/11-TypeScript qualification ran at c1f7176fb; after rebasing onto main 659c1fd44, all nine patch files are byte-identical. Six critical public-entrypoint cases, all 11 native cases, typecheck and bilingual checks were rerun on the reviewed head.
Check Result
Regression sensitivity Before implementation, both File/SQLite public inspections omit the later peer. After the read repair, both reject later@host adoption until the codec repair. Failure evidence retained privately.
Public entrypoints 66 passed across objective revision/adoption, source-routing and objective projection suites; normal and @ late-peer full read → adopt → read on File/SQLite; real global-App HTTP and no implicit provider write.
Native owner 11 passed; retained/adopted history, old ID forms, >128-member read observations, malformed source facts, CAS, replay and unchanged objective admission.
Static TypeScript control-plane typecheck; changed-file Ruff; configured mypy (17 source files); semantic diff advisory; CLI output budget; RFC status/bilingual and whitespace checks
Repository premerge Quick premerge passed: 6 direct + 4 selected checks at the original qualified head and again at the rebased reviewed head. The first concurrent attempt hit the unchanged 120-second semantic-scan timeout; standalone semantic validation and the final sequential aggregate passed. The earlier timeout remains recorded.
Guard skills clean-code-guard, test-guard and docs-guard completed

No live Goal, model invocation, Lark send, deployment or provider promotion. Full repository CI, installed packages and real-model adherence have not been qualified locally. Passing these read/write fixtures does not establish the complete R4/R5 journey.

Frontend / Visual Evidence

Data-only repair in the existing Current objective and revisions disclosure. Its existing peer_adoption list renders pending/adopted rows from the same HTTP response; no page, control, layout or frontend code is added. The real HTTP/Core path is tested. Packaged-browser screenshots and installed UI execution were not run for this backend/readback change.

Boundary Checklist

  • Only scoped product code, durable semantic regressions and paired public RFC text; no private state, raw logs, credentials or local artifact paths.
  • Explicit staging, DCO sign-off and main base.
  • Author proposal only; no merge or release authority is asserted.

Signed-off-by: aihop <4408344+hhyykk@users.noreply.github.com>
@hhyykk
hhyykk force-pushed the codex/objective-peer-inspection branch from c1f7176 to ddde4ff Compare October 24, 2026 05:20

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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

动机

后来加入协作目标的 Agent,需要先看到负责人已修订的目标,再检查自己的现有工作并确认当前版本。 以前,修订之后才登记的成员已被执行门阻止,却不出现在目标的待确认列表;带 @ 的合法登记名还会在确认时被旧记录校验器拒绝。现在检查会列出该成员,确认成功后可读回自己的当前版本。 后来登记的成员能够发现并完成既有确认流程;读取本身不写入成员、修订或确认记录,其他成员仍可独立推进。 本 PR 不改变目标、任务、预算或权限的所有权,不自动采纳目标,也不证明已安装宿主、真实模型遵从或整个目标修订功能的长期收益。 本次交付当前登记成员的发现与确认闭环;更广的打包前端、安装部署、真实模型遵从和完整成本验收仍由原有任务分别承担。

不处理这两个问题,执行门仍要求该成员自行确认,而常用检查入口无法完整告诉它该做什么,合法登记名甚至无法完成操作。此次验收以实际来源的检查、显式确认和结果读回为准,新增一行列表或通过结构测试本身不算闭环。

改动思路

当前登记名单是读取时的事实,交给既有 TypeScript 目标投影与登记名规范化所有者处理即可;Python 只传递已解析来源目标的名单,不新增持久状态或第二套执行判断。 本次九个文件修复来源适配、同一投影和原记录字符校验,并补齐两种本地后端与全局 HTTP 入口的验证;执行门、确认写入、CAS 和历史修订所有者保持原位。 原修订时的成员和已有确认记录继续保留;当前名单只补上后来登记的人。待确认状态仍由既有“是否确认最新修订摘要”规则计算,读取不会写任何确认。确认时仍检查精确修订、摘要及自己的工作摘要,其他成员无需等待它。

下表来自相同基线/当前源码上的实测,范围是隔离的真实 File、SQLite 和原生入口:

条件 原基线 当前 head
修订后登记普通或 @ 成员 本地检查缺少自己的待确认项 显示待确认;自行确认后读回当前版本
全局 App 可用,但存在不同的来源登记 来源 CLI/HTTP 缺少后来成员 使用真正来源目标,排除全局诱饵
@ 成员实际执行确认及原操作重放 两种后端均返回输入错误 确认成功;重放不产生第二次写入
未传当前名单、空名单或没有修订目标 原有完整投影和执行门 全部字段保持一致

具体改动

规范依据为 原目标成果修订 RFC,不可变 revision 659c1fd441abf5bd9171f22d9a84981497856a63。Current operating objective 对应后来成员必须自行确认、保留原目标和权限;Goal context before work selection 对应检查入口可见自己的待确认状态,读取不等于确认;Decisive acceptance 对应精确来源、自己的工作摘要、CAS、重放和保留结算/释放。本次实现这三个条件在后来成员路径上的修复;整个功能的打包、安装和模型效果验收仍保留原边界。中英文 RFC 同步说明当前名单是观察事实、历史成员不能被抹掉,以及 @ 记录的回退读取要求。

关键代码讲解

  1. inspect_goal_acceptance 先走原 _routing,再从解析出的来源 Goal 取得登记名单,随原检查请求传给 TypeScript。没有从全局 App 随手取一份名单;真实全局 CLI 与 HTTP 用可用的不同登记源验证了这个区别。
  2. inspectGoalAcceptance 保留精确 Goal 身份、当前工作摘要和原执行门,新增的可选参数只传给现有接受契约投影。现有 GoalAcceptanceRead.contract/projectGoalAcceptance 继续拥有组合逻辑,未添加另一套 Python 判定。
  3. projectGoalObjective 用既有登记名规范化规则验证新事实,再按原成员、已确认成员、当前成员做稳定去重。新成员的 current 仍由原摘要规则计算,因此显示出来时是待确认,不会自动放行。未提供或提供空名单时完整旧投影保持。
  4. agents/readGoalObjective 保留原历史姓名形式、唯一性、128 个持久成员/确认项及总容量限制,只补上登记系统已支持的 @。历史 1Legacy、Legacy.Owner 原样保留,没有把存量身份重新规范化。新名单可观察到 130 个成员,也不意味着能绕过持久写入容量。

对主干的风险

最强风险是“全局入口读错来源”,以及“名单刷新变成自动确认或改写历史身份”。本次 66 项 Python、11 项 TypeScript 测试及类型检查通过,覆盖真实 File/SQLite、独立成员、旧历史、非法名单、过期摘要和原写入语义。另在不可变基线与当前 head 执行完全相同的四个后来成员、两个来源 HTTP 和两个独立编写的 @ 确认/重放用例:基线八个预期失败,当前八个通过。HTTP 使用实际 App 与真实隔离后端,数据是合成目标和任务,未修改活动目标。

完整投影探针覆盖无目标、待确认、已确认、新修订、历史身份五种状态。没有只比较状态码:未传名单、空名单、原执行门和无目标输出全部字段一致;传入两个后来成员时,只移除这两个明确新增的名单行和对应差距后,其余完整输出与基线一致,输入也未变化。130 个当前观察与非法名单是反例,既不删除历史行,也不写入修订、成员或确认记录。

补充的两个真实 CLI 恢复用例还验证:自己的任务变化后,旧工作摘要不能用于确认,失败不写入;重新审阅并使用新摘要确认后,实际执行原有导出文件校验,再从独立检查读回已接受的准则,其他成员仍待确认。这证明恢复后能继续有用的既有工作,没有把确认回执或执行门清除本身当成果。首次补充探针误把内部诊断文案当作公开 CLI 返回,原失败保留;纠正为公开错误码与无写入反证后两项通过。

必要 source-checkout premerge 的六个直接检查、四个选择检查及九文件公开边界扫描通过,含双语 RFC、语义所有者和实际租约运行时检查。初始聚合因旧范围质量凭据过期而红,已写入当前精确范围凭据并冷读回,再执行原生聚合得到通过;没有把失败改成可忽略项。未查询、轮询或等待 GitHub CI。

语义与 CI 对齐

复用原有注册名单、目标修订和确认词汇,没有新共享枚举或演员生命周期协议;唯一输入语言变化是接受原登记系统支持的 @。包含该字符的新持久记录需要兼容读取器才能回退,不能在回退时擅自重命名身份。其他来源身份、CAS、旧结算/释放以及任务、预算、权限边界均未放宽。

我的整体评价

当前登记名单是读取时的事实,交给既有 TypeScript 目标投影与登记名规范化所有者处理即可;Python 只传递已解析来源目标的名单,不新增持久状态或第二套执行判断。 本次九个文件修复来源适配、同一投影和原记录字符校验,并补齐两种本地后端与全局 HTTP 入口的验证;执行门、确认写入、CAS 和历史修订所有者保持原位。 已检查未变化的 goal-objective-settings.tsx:55,它直接渲染当前 peer_adoption 列表;本次未改布局、控件、样式或呈现结构,因此 visual_review 为 not_applicable。 本次真实 HTTP 返回与既有渲染消费者已核对,未运行打包浏览器或已安装宿主,不声称完成视觉或安装验收。

本次是有用且边界明确的增量:后来成员可以发现、完成并读回自己的既有确认流程,改动量与确定的阻断相称。采用直接事实传递与原投影复用,不需要持久刷新标记、新页面或通用框架。用户体验在当前源码路径上改善,长程价值是恢复该协作路径的可用性;真实模型是否理解并有效重规划、完整成本及下游成果仍未证明,本结论不替这些目标结案,也不授予合入权限。当前精确 head ddde4ff6d43a88419ef4b977b85f451d4a2801e8 未发现可复现阻塞问题。

English verdict: APPROVE — ddde4ff6d43a88419ef4b977b85f451d4a2801e8 repairs later-peer objective discovery and supported @ identity adoption through the real source CLI/HTTP path. All 66 Python tests, 11 typed tests, typecheck and exact-scope native premerge/quality checks pass; eight matched baseline failures pass at head. Complete projection comparisons preserve existing fields except the intended pending-peer rows. Packaged/installed-host, live-model and long-horizon qualification remain separate.

@loopx-agent
loopx-agent merged commit 013ca8d into main Oct 24, 2026
33 of 43 checks passed
@loopx-agent
loopx-agent deleted the codex/objective-peer-inspection branch October 24, 2026 07:21
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