feat(explore): unify Harness modes and provide turn-start context - #5610
loopx-agent wants to merge 5 commits into
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
审核完整 head:a6e2ec7535014945c6d5193b6e2bf86ebd5fc8cb。
动机
在 Goal 设置中选择探索证据和分支规划、并在下一轮开始前读取已有证据的用户与 Agent。
以前证据图谱与规划分成两个配置入口,规划也可能没有配套证据;现在一个模式选项完成配置,下一轮收到带来源的只读上下文入口,仍由原有权限决定能否执行。
真实打包设置完成三种模式的预览、应用和回读,过期预览拒绝后可重新应用;上下文保留反证且不启用 spawn,旧 Harness 不获外部发布权。
不验收实验选择质量、模型实际采纳、科学收益或长期轨迹,不扩大 claim、lease、quota、派生 Agent 与外部 sink 权限。
改动思路
入口复用现有 Explore 能力:证据图谱是记录假设和反证的持久资料,Harness 是在已有任务中提出有界分支规划的读取面。Goal 设置只呈现一个 off/evidence/planning 模式;mode 从原有 graph/harness flags 派生,没有第二份持久 mode 状态。规划配套证据,但不等于执行权限。
语义由 TypeScript explore_configuration.ts 的 resolve/plan 负责;Python 适配现有 registry、日志、Todo、CLI 与 hook。explore_turn_context.ts 将现有 Graph 与 planner 输出投影为最多三条近期记录,保留总量、遗漏数、反证状态和后续读取命令。quota/turn 使用原来的 turn-start hook 契约请求 before_work 读取,不会自动 claim、启动 worker、写证据或扣 quota。外部发布仍需显式 Graph 启用和原有 provider/权限。
具体改动
独立规范基准:docs/architecture/rfcs/research-exploration-control-plane-v0.md,revision 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1。先读改动前的规范,再判断整个 PR,未采用作者的测试数量或完成声明作为证据。
ownership boundaries do not create a second research graph or executor— implemented。typed contracts avoid prose classification and silent v0 mutation— implemented。milestone promotion depends on evidence and real callers— deferred。the Chinese and English documents remain semantic mirrors— not_met。
完整 30 文件 +740/-152:四个前端文件更新 mode 标签与调用,配置 catalog/UI/Chat allowlist、configure-goal 和 CLI 注册 mode,三个 Explore/控制面模块提供配置与只读上下文,quota/turn/boundary/history/registry 接上共同 owner,activation 收紧发布授权,既有测试与 smoke 更新,新增 277 行能力测试,registry I/O manifest 只更新调用位置,英文 RFC 与能力 README 描述边界。
EXPLORE_MODES是 Explore 配置局部闭集,复用已有 typed owner;新 mode 与 legacy flag 混用、非法值、planning 明确关闭 graph 均拒绝。旧 Harness-only 配置派生本地图谱,旧 CLI/profile 存储继续可读。extend_turn_start_dispatch在 off 时不增加 Explore 读取;开启时请求只读explore turn-context,该真实 CLI 要求 Goal 中已注册 agent。explore_turn_context读取既有日志/Todo/planner,TypeScript projector 压缩展示,不能把未展示记录当成不存在。sync_explore_graph_after_material_refresh允许旧 Harness 本地投影,但外部 sink 的授权还要求原始 graph.enabled=true。独立实际 provider fixture 有配置和 applicable=true,返回 external_sink_suppressed,外部 runner 调用为 0。- 前端 select 保留 readOnly disabled 和 review_order 的“正向/反向”标签 fallback。合入主干后的 Chat 配置 allowlist 同时保留 Explore 与 review_order/agent_orders;没有引入新的 Agent 权力 owner。
对主干的风险
独立验证 71 项相关测试、实际 configure-goal smoke、control-plane TS typecheck、打包 build/verify、281 个 registry I/O 调用位置、advisory、全树语义 smoke 和 diff check。真实打包 Chat 连接隔离 registry/生产 HTTP:设置→能力中心→选 Goal→探索 Harness,三种模式可预览、应用、回读,profile 可选,spawn 始终 false。目标 profile 在预览后被另一配置写入改变时,apply 返回 409、原状态保持;重新预览可继续应用。无须重输 Goal,必要步骤分别提供作用域选择和待写入 revision。桌面和 390px viewport 已检查,390px 无横向溢出;CLI 和浏览器没有使用实际业务 Goal。
真实 explore turn-context 验证七个节点只展示三个并明确 omitted=4,保留 refuted finding,planning 是 analysis_only;同一 registry 的独立 off Goal 返回 null,上新未注册 agent 被拒绝,显式注册后可以读取,再关闭 mode 后回到 null。输出虽有界,底层仍读取完整日志;本次不宣称长日志成本或模型实际采纳已经验证。没有运行付费 provider/live Lark、科学评分或长期模型轨迹,也没有查询 CI。
P2:同步中文 RFC 的当前契约
docs/architecture/rfcs/research-exploration-control-plane-v0.md:1041–1050 新增统一模式、权限隔离、M3 entry/adoption prerequisite 与尚未验证模型采纳的文本。中文镜像在 decision log 后直接进入 §20,没有同义更新。改动前的语言说明和 §20 均明确要求 semantic mirrors,并称差异是缺陷。现在从中文规范读取入口与阶段边界的用户得到旧契约,即使所有代码测试通过也不能弥补。
最小修复:在同一 PR 同步中文的模式、权限和阶段边界,按既有 living RFC 规则保持 milestone/decision statement 一致;保留“前置入口”和“已验收科学收益”的区别,无须扩展实现范围。
P2:收口关闭模式的可观察授权变化
在相同 source fixture 上,Graph/Harness 都关闭,registry/history/实际 quota boundary 与 required-read 结果一致,activation 两侧均 disabled、无 sink 调用。但 activation.py:94 在 disabled return 前计算新许可,使 external_sink_delivery_authorized 从 base 的 true 变为 false。该修改保守地收窄展示,未发现权限扩大;仍不能声称所有关闭模式 packet 与旧版完全一致。
最小修复:保持旧关闭态 projection,或把这项授权回读纠正明确纳入接受的行为变化,说明涉及的消费者并增加成对 coverage,然后重新限定 feature-off parity 声明。不要删除原测量或把 flag 差异归一化掉。实际执行、schema、guidance 和持久状态的关闭隔离仍需分别判断;provider 可发现也不等于授权。
我的整体评价
REQUEST_CHANGES。现有 owner、TypeScript placement、三种模式入口与读取/执行分离有实际价值,主体运行与 UI 负例通过,PR 规模与同一用途相称。未来演进审查已检查配置与读取边界:统一 editor/typed mode,继续共用 Graph/planner/hook,比第二份 graph、executor 或 mode 状态更易修改和回滚;未要求无关语言迁移或实验体系。
当前仍需修复两处有界契约差异,尤其按改动前标准同步双语规范,并限定关闭态授权 projection 的变化。M3 的模型采纳、继续工作和科学判断仍由现有后续资格负责,不能将本次 packaged UI、测试数量或只读上下文当作父里程碑完成。复审应检查完整新 head,而不是继承本次测试或只看修复行。
English verdict: REQUEST_CHANGES
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
Request changes conclusion (author-owned PR; COMMENTED exact-head review)
Exact head: 5610@a6e2ec7535014945c6d5193b6e2bf86ebd5fc8cb。Whole PR base: 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1。
动机
长期研究中回访旧假设的 Agent 和配置它的操作者,需要在下一轮看到最新阻塞或反证,并在同一设置入口选择仅证据或证据加规划。
原先证据图谱和规划分别配置,选题前要自行发现读取命令;回访旧节点后的新阻塞留在图谱中,需要下一轮上下文正确带回。
统一模式和打包设置能够预览、应用、读回,过期预览会拒绝并可恢复;启用后 quota 请求只读上下文,但该上下文遗漏最近更新的旧节点。
本次验收配置与轮次读取入口,不验收 M3 的实验结果采用、模型选题质量、科学收益或持续吞吐,不启动模型、子 Agent 或外部发布。
改动思路
独立依据:docs/architecture/rfcs/research-exploration-control-plane-v0.md @ 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1。对应原规范条目:13. Complexity and Safety Budget;15. Evaluation and Claim Boundary;20. Acceptance Criteria for the RFC。只评价当前有界入口,不把未来 M3/M4 设计当本 PR 必须完成的执行器;中英文镜像是既有当前义务。
实际链路:Goal capability settings / configure-goal → existing CAS configuration service → TS Explore mode owner → legacy fields and common projections → quota/turn hooks → explore turn-context → existing log projection and branch planner → bounded TS read model。复用 Explore typed configuration and read model; existing result_log, todo_branch_plan, quota/claim/lease/spawn and configuration CAS owners。通用模式与有界投影在 TypeScript owner;Python 只适配现有 IO/规划/配置事务,没有第二份研究图谱。
具体改动
30 个文件,+740/-152;全量 diff 按生产行为、文档和验证逐项核验。
关键代码讲解
planExploreConfiguration 是三模式及 legacy 冲突的类型化 owner,写回既有两个 flag。extend_turn_start_dispatch 仅在启用时追加 before_work 读取命令。explore_turn_context 校验真实注册身份,复用证据日志和原规划器。projectExploreTurnContext 压缩节点、发现、分支各三项,保留完整读取命令;其中节点选择错误地消费首次创建顺序。_goal_capability_options 与既有 CAS 服务支撑设置预览及过期拒绝。
真实正向路径:Same feature-off real File/SQLite quota retains decision/run, execution obligation, hook dispatch and required reads; route prefix only differs by disposable path. Evidence/planning/off updates existing flags; spawn remainsfalse; planning analysis_only; refuted finding retained; stranger/foreignGoal reject; new registered Agent receives same scoped graph; off retains log and evidence reactivation recovers counts。
真实反向路径:Five nodes first created Jan1–5; route-0 updated Feb1 to blocked with actionable reason, independent refuted finding retained. Canonical summary includes route-0, but head recent_nodes is route-2/3/4; blocked count1 gives no omitted node identity/reason. Reproduced in File and SQLite, evidence bytes unchanged。
打包 Goal 设置页:直接在同一模式控件选择 evidence/planning 和已有 Profile,预览绑定当前 revision 后应用,原生 registry 与页面读回一致;并发切到 off 后旧预览被拒绝,再预览应用可恢复 planning,spawn.allowed 始终 false。目标 Goal、配置范围、生效来源与下一动作在同一 viewport 可读。预览和应用分别提供具体变更与 scoped 同意/CAS 检查,没有另要求重填身份或重复开关。
对主干的风险
[P2] 近期节点遗漏旧节点的最新变化。 loopx/control_plane/capabilities/explore_turn_context.ts:29 用 nodes.slice(-3);原有 result_log 按 first_recorded_at 排序。实测五节点在 1 月 1–5 日创建,2 月 1 日将第一个更新为 blocked 并附明确原因。真实 File、SQLite authority 上,生产 explore summary 都保留该节点;生产 turn-context 却返回第 3–5 个,只有 blocked 总数 1,没有该最新节点身份或原因。refuted finding 仍保留,证明不是整个日志丢失。长程反复回访旧节点是普通场景,新增加的必读上下文应带回最新变化;完整 summary 可恢复,但该切片增加读取成本却漏掉最新线索。应在有界 read model 按既有 last_updated_at 稳定排序取三项,不改全图排序;补实际 CLI 旧节点更新回归。
[P2] RFC 中英文当前事实不一致。 English §19 新增模式/轮次入口与 M3 prerequisite 说明,中文对应 §19→§20 未同步; accepted §20 明确要求语义镜像。请在已有中文文档同步实现边界与未完成资格,不将此次入口当作科研收益验收。
验证:55 focused pytest passed; explore-configure-goal-smoke and frontend capability smoke passed; packaged build/install/source verify passed; immutable base/head actual CLI with isolated real File/SQLite authorities (6/30 observations); actual packaged browser settings preview/apply/readback, stale-preview rejection and re-preview recovery; semantic advisory and formal smoke, whitespace passed。
证据边界:Synthetic graph/timestamps and real File/SQLite canonical stores, actual source-pinned CLI and packaged frontend/backend; no mocked decision owner. Browser copied fixture initially had stale source/runtime paths and apply preflight safely rejected; corrected only disposable routing before valid journey. No PostgreSQL authority refactor; no live Lark, model or long-horizon adoption/benefit measurement。未查询或等待 CI;不能由测试计数、上下文出现或设置可用推出实际长期模型采用和效率收益。
我的整体评价
REQUEST_CHANGES。统一配置和可恢复设置体验预期正向,权限及 default-off 保持;但近期节点新读模型遗漏旧节点最新状态,使长程效果和额外读取成本可能负向,必须修复再批准。实际模型采用、科研收益和吞吐仍待后续匹配证据。
面向后续改动的有界重构检查:已复用 typed owner、现有图谱与规划器;建议只修 bounded recent selector,不另增 recency 持久字段或重写全图排序。 CLI 与打包前端配置旅程已覆盖,Lark live 发布未变未测;上下文不授予 claim/lease、派生、spend 或外部账号权限。
English verdict: REQUEST_CHANGES - 5610@a6e2ec7535014945c6d5193b6e2bf86ebd5fc8cb; recent_nodes slices first-created ordering and omits a freshly blocked older node, reproduced through actual CLI on real File/SQLite authority; bounded settings/CAS journey works, but recency and accepted EN/ZH RFC parity need repair.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Addressed both exact-head reviews in
Validation: 14 focused tests, Explore configure-goal smoke, control-plane typecheck, semantic advisory/full smoke, Ruff and whitespace checks passed. The first semantic command used a nonexistent filename and was corrected to the shipped semantic-vocabulary smoke; this was not a product test failure. No live model adoption or scoring claim. Please re-review the complete new head before merge. |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
Approval conclusion (author-owned PR; GitHub blocks formal self-review)
Exact head: 5610@642e381d2682cfd86158caf129e9edca41e87c80. Whole PR base: 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1.
动机
长期探索中回访旧假设的 Agent,以及通过 Goal 设置配置证据和规划的操作者。 证据与规划分开配置;旧修订的近期列表按首次创建切片,遗漏旧假设最新阻塞,关闭态授权观察改变且中文规范未同步。 一个 off/evidence/planning 设置入口;下一轮收到有界只读命令,当前近期列表按更新选取旧节点,关闭态授权观察和双语规范已修复。
本次只验收 Explore 配置与轮次读取前置入口;模型采纳、科研收益和持续效率另需真实轨迹。
改动思路
独立规范:原规范 @ 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1。对应条目:13. Complexity and Safety Budget;15. Evaluation and Claim Boundary;20. Acceptance Criteria for the RFC。按改动前规则验收本次有界结果,没有用作者声明或新增规范自己证明完成。
实际链路:Goal settings/configure-goal → existing CAS service → TS Explore mode owner → legacy flags → quota/turn hook → explore turn-context → existing log/planner → bounded TS read model。归属:Explore typed configuration/read model; existing configuration CAS, result_log, planner, quota/claim/lease/spawn owners。通用模式和投影在 TypeScript;Python 适配既有 IO。
具体改动
完整 31 文件,+807/-152。
planExploreConfiguration 写既有 flags;extend_turn_start_dispatch 只在启用时请求 before_work 命令;explore_turn_context 校验注册身份并读取原日志/规划器;projectExploreTurnContext:22–31 在新数组按 last_updated_at 排序取三项,保留原图顺序;activation.py:125 将发布许可计算放到 disabled 返回之后。中文 RFC 同步入口、权限及 M3 前置边界。
独立正向核验:Actual CLI on isolated real File/SQLite stores: five nodes, old route-0 updated to blocked last; current recent IDs are0,4,3 with blocker, cap3/omitted2; canonical order0..4 and log bytes unchanged; refuted finding retained. Evidence/planning/off works, spawnfalse, planning analysis_only; off preserves log/re-enable recovers counts; stranger/foreignGoal rejected and newly registered Agent receives scoped graph. Paired disabled activation True/False exactly matches base with no sink.
独立负向核验:The historical old-node omission now passes on both real authorities; conflicting graph-disable while planning still rejects without registry mutation; registered identity and foreign scope remain enforced. Old disabled-authorization mismatch is eliminated for both Boolean inputs; new Chinese paragraph matches English stage/authority limits.
对主干的风险
旧审查的三项阻塞均由当前证据消除:最近旧节点恢复、关闭态授权观察与基线一致、中英文契约同步。旧失败证据仍保留,未抹去或用作者测试计数代替。配置和前端依赖与旧修订逐文件一致,因此复用此前实际浏览器的模式/Profile 预览应用、过期预览拒绝及重新预览恢复;本 head 未再执行浏览器交互,当前完整包已重建、安装到隔离 source checkout 并校验。
验证:30 current focused Python tests passed (context, CLI lifecycle, Chat configuration), configure-goal smoke and compiled frontend capability smoke passed; current packaged build/install/source verify, TS typecheck, advisory then full semantic smoke and whitespace passed. Current immutable-base/head CLI receipts:6/30 observations, plus paired off authorization. Prior full-head55 tests and packaged browser settings/CAS journey reused only after proving all configuration/UI dependencies unchanged; current changed owners revalidated.
证据边界:Current real File/SQLite authority/CLI and packaged build; prior actual packaged browser evidence reused with explicit dependency invalidation check: only activation, TS recency, test and Chinese RFC differ. Browser not rerun on this head; model adoption, scientific value, long-history IO, live Lark, Windows and sustained fleet throughput unmeasured. Returned context is bounded, underlying full log fold is not. 未查询或等待 CI。初始路径/依赖或直接 TS smoke 调用错误已按正式入口纠正;不把这些失败调用称作通过。
我的整体评价
APPROVE。本次配置与轮次入口前置结果可交付,预计减少反复配置、遗漏反证和重复查完整图的成本;返回内容有界,但长期采用和底层日志成本未量化,不能推导科研收益或整个 Goal 完成。
面向下次改动的有界重构检查:已将模式与近期投影收在原 typed owner,修订直接用既有更新时间且不新增持久 recency 字段。CLI 与既有打包设置旅程都有证据;Lark live 发布未变未测。 未执行 merge 或本机产品升级。
English verdict: APPROVE - 5610@642e381d2682cfd86158caf129e9edca41e87c80; old-node recency, disabled authorization parity and EN/ZH contract repaired; current real File/SQLite CLI and packaged checks passed; unchanged browser journey evidence explicitly reused, long-horizon adoption unmeasured.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: 5610@642e381d2682cfd86158caf129e9edca41e87c80. Whole PR base: 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1.
动机
长期探索中回访旧假设的 Agent,以及通过 Goal 设置配置证据和规划的操作者。 证据与规划分开配置;旧修订的近期列表按首次创建切片,遗漏旧假设最新阻塞,关闭态授权观察改变且中文规范未同步。 一个 off/evidence/planning 设置入口;下一轮收到有界只读命令,当前近期列表按更新选取旧节点,关闭态授权观察和双语规范已修复。
本次只验收 Explore 配置与轮次读取前置入口;模型采纳、科研收益和持续效率另需真实轨迹。
改动思路
独立规范:原规范 @ 8f34c2c87711129a62f7d1012c56cbe7fa90fdf1。对应条目:13. Complexity and Safety Budget;15. Evaluation and Claim Boundary;20. Acceptance Criteria for the RFC。按改动前规则验收本次有界结果,没有用作者声明或新增规范自己证明完成。
实际链路:Goal settings/configure-goal → existing CAS service → TS Explore mode owner → legacy flags → quota/turn hook → explore turn-context → existing log/planner → bounded TS read model。归属:Explore typed configuration/read model; existing configuration CAS, result_log, planner, quota/claim/lease/spawn owners。通用模式和投影在 TypeScript;Python 适配既有 IO。
具体改动
完整 31 文件,+807/-152。
planExploreConfiguration 写既有 flags;extend_turn_start_dispatch 只在启用时请求 before_work 命令;explore_turn_context 校验注册身份并读取原日志/规划器;projectExploreTurnContext:22–31 在新数组按 last_updated_at 排序取三项,保留原图顺序;activation.py:125 将发布许可计算放到 disabled 返回之后。中文 RFC 同步入口、权限及 M3 前置边界。
独立正向核验:Actual CLI on isolated real File/SQLite stores: five nodes, old route-0 updated to blocked last; current recent IDs are0,4,3 with blocker, cap3/omitted2; canonical order0..4 and log bytes unchanged; refuted finding retained. Evidence/planning/off works, spawnfalse, planning analysis_only; off preserves log/re-enable recovers counts; stranger/foreignGoal rejected and newly registered Agent receives scoped graph. Paired disabled activation True/False exactly matches base with no sink.
独立负向核验:The historical old-node omission now passes on both real authorities; conflicting graph-disable while planning still rejects without registry mutation; registered identity and foreign scope remain enforced. Old disabled-authorization mismatch is eliminated for both Boolean inputs; new Chinese paragraph matches English stage/authority limits.
对主干的风险
旧审查的三项阻塞均由当前证据消除:最近旧节点恢复、关闭态授权观察与基线一致、中英文契约同步。旧失败证据仍保留,未抹去或用作者测试计数代替。配置和前端依赖与旧修订逐文件一致,因此复用此前实际浏览器的模式/Profile 预览应用、过期预览拒绝及重新预览恢复;本 head 未再执行浏览器交互,当前完整包已重建、安装到隔离 source checkout 并校验。
验证:30 current focused Python tests passed (context, CLI lifecycle, Chat configuration), configure-goal smoke and compiled frontend capability smoke passed; current packaged build/install/source verify, TS typecheck, advisory then full semantic smoke and whitespace passed. Current immutable-base/head CLI receipts:6/30 observations, plus paired off authorization. Prior full-head55 tests and packaged browser settings/CAS journey reused only after proving all configuration/UI dependencies unchanged; current changed owners revalidated.
证据边界:Current real File/SQLite authority/CLI and packaged build; prior actual packaged browser evidence reused with explicit dependency invalidation check: only activation, TS recency, test and Chinese RFC differ. Browser not rerun on this head; model adoption, scientific value, long-history IO, live Lark, Windows and sustained fleet throughput unmeasured. Returned context is bounded, underlying full log fold is not. 未查询或等待 CI。初始路径/依赖或直接 TS smoke 调用错误已按正式入口纠正;不把这些失败调用称作通过。
我的整体评价
APPROVE。本次配置与轮次入口前置结果可交付,预计减少反复配置、遗漏反证和重复查完整图的成本;返回内容有界,但长期采用和底层日志成本未量化,不能推导科研收益或整个 Goal 完成。
面向下次改动的有界重构检查:已将模式与近期投影收在原 typed owner,修订直接用既有更新时间且不新增持久 recency 字段。CLI 与既有打包设置旅程都有证据;Lark live 发布未变未测。 未执行 merge 或本机产品升级。
English verdict: APPROVE - 5610@642e381d2682cfd86158caf129e9edca41e87c80; old-node recency, disabled authorization parity and EN/ZH contract repaired; current real File/SQLite CLI and packaged checks passed; unchanged browser journey evidence explicitly reused, long-horizon adoption unmeasured.
Problem and result
Explore graph and branch planning had separate switches and no turn-start usage entry. Enabled agents could see configuration without receiving a usable evidence/planning command. Goal settings now expose one Explore Harness with
off,evidence, andplanningmodes. Planning includes the evidence graph; the enabled turn-start hook requests a bounded read before work selection.The existing
explorecapability / built-inloopx-coreprovider owns this change. TypeScript owns mode normalization and the bounded read projection; Python adapts existing storage, evidence and Todo providers. Legacy configuration fields and CLI enable flags remain supported. Legacy Harness-only Goals gain local evidence projection but do not gain external sink publication. Spawn, claim, lease and quota authority remain separate. Disabling preserves evidence and the existing disabled activation authorization projection; attempting graphless planning fails with a repair command. The short context selects nodes by their latest update, so revisiting an older hypothesis brings its new blocker back into view without changing canonical graph order.User journey and validation
Previously users configured two independent capabilities. They now choose one mode in Goal settings, preview/apply it, and read back the same owning state. The packaged UI was exercised against an isolated real registry: evidence and planning changes, profile selection, stale-preview rejection and recovery. Fixed the related loss of registered planner profile options in the public Goal editor projection.
EXPLORE_MODESis local to Explore configuration, not a new kernel lifecycle. Registry IO manifest changes are source positions only, with zero unclassified direct IO sites.The read bounds returned context, not history IO. Live long-horizon mechanism adoption and score effects remain unqualified and will be checked from separate pinned benchmark attempts. This advances the S11 / research-exploration RFC entry/adoption prerequisite, not scientific acceptance.
Future-facing pass: consolidated mode semantics under one typed owner and retained old fields as compatibility transport; no second scheduler or automatic evidence writer.