Skip to content

LoopX v0.3.0

Choose a tag to compare

@huangruiteng huangruiteng released this 30 Jul 10:51
89b6089

LoopX v0.3.0

LoopX v0.3.0 is a capability and control-contract release. It promotes simplify-first change qualification, provider-neutral decision context, governed material lifecycle workflows, managed-project delivery, and Ark Managed Agent host support while tightening the long-running control plane and its release evidence.

State Kernel & Control Plane

  • Replan is now easier to reason about and recover: ordered quota rules, explicit recoverable Turn stages, repeat-vision guidance, and consolidated frontier guards keep the next action deterministic without hiding repair or acknowledgement requirements (#2585, #2594, #2597, #2636).
  • Agent-facing status and quota projections are smaller and more lane-precise. Shared read models now own benchmark, gate, and fallback projection rules instead of growing the CLI facade (#2590, #2593, #2637, #2654, #2659).
  • Fresh linked worktrees now keep the requested canonical project and Goal route instead of resolving to stale local state (#2650).

Capabilities & Workflows

  • Change Quality can qualify the exact final diff with a provider-neutral prepare -> record -> verify contract. Its host workflow is simplify-first, discovers repository-native quality oracles, records sparse risks and validation evidence, and keeps model-behavior shadow promotion separate from normal delivery and merge authority (#2570, #2604, #2605, #2606, #2607, #2651).
  • Decision Context adds default-off, provider-neutral contracts for assembling rebased evidence, validating cursor commits, orchestrating profiles, binding runtime providers, and recording audited outcome feedback. Enabling a profile still does not grant a provider state or decision authority outside its declared contract (#2540, #2545, #2552, #2554, #2555, #2563).
  • Material Lifecycle now supports source-backed intake, lossless ranking rebuilds, decision-driven reranks, bounded explore execution, owner-gated cutover, and readable projections through an official skill. Material work is projected only when its capability envelope is active; activation remains explicit (#2544, #2558, #2561, #2562, #2566, #2569, #2571, #2601).
  • Managed-project skill delivery and Ark Managed Agent host entries make LoopX workflows installable and resumable on more agent hosts without moving control-plane authority into the host adapter (#2568, #2616, #2640, #2645, #2646).

Optional Capability Activation & Use

All four surfaces below are opt-in. Installing a project skill makes the
workflow discoverable; it does not grant write, merge, provider, or host
authority.

Change Quality

Activation: Install the managed workflow, preview the goal policy, then
apply it:

loopx project-skill install \
  --project . \
  --skill loopx-change-quality \
  --surface codex \
  --execute

loopx configure-goal \
  --goal-id <goal-id> \
  --change-quality-enabled \
  --change-quality-safe-fix \
  --change-quality-strict-receipt

loopx configure-goal \
  --goal-id <goal-id> \
  --change-quality-enabled \
  --change-quality-safe-fix \
  --change-quality-strict-receipt \
  --execute

Validation: Qualify and read back the exact final diff:

loopx --format json change-quality prepare \
  --goal-id <goal-id> \
  --repo-path . \
  --base-ref origin/main

loopx --format json change-quality record \
  --goal-id <goal-id> \
  --repo-path . \
  --base-ref origin/main \
  --result-json <ignored-or-temporary-result.json> \
  --execute

loopx --format json change-quality verify \
  --goal-id <goal-id> \
  --repo-path . \
  --base-ref origin/main

loopx canary premerge --from-git-diff --goal-id <goal-id>

Disable / rollback: Disable it with the same preview-first flow:

loopx configure-goal \
  --goal-id <goal-id> \
  --no-change-quality-enabled \
  --no-change-quality-safe-fix \
  --no-change-quality-strict-receipt

loopx configure-goal \
  --goal-id <goal-id> \
  --no-change-quality-enabled \
  --no-change-quality-safe-fix \
  --no-change-quality-strict-receipt \
  --execute

Authority boundary: The capability permits at most one policy-authorized
bounded repair pass and never grants merge authority.

Docs: See the Change Quality guide.

Decision Context

Activation: Decision Context has no persistent global switch in v0.3.0.
Supplying an explicit private profile to a command opts that command in.

Validation: Start with the read-only contract, profile, source, and
evidence surfaces:

loopx decision-context architecture --format json

loopx decision-context inspect-profile \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --format json

loopx decision-context source-manifest \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --profile <ignored-private-profile.json> \
  --format json

loopx decision-context prepare-evidence \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --profile <ignored-private-profile.json> \
  --decision-id <stable-decision-id> \
  --format json

Disable / rollback: Stop passing the private profile to subsequent
commands. Because this is per-command opt-in, there is no persistent switch to
clear.

Authority boundary: These commands inspect or prepare evidence only;
semantic rebase, proposal, writeback, and cursor commit remain separately
authorized project integration steps.

Docs: See the Decision Context guide.

Material Lifecycle

Activation: Install the official project workflow. A connected project
must separately provide the goal-scoped material_lifecycle capability
envelope, profile, source adapters, write scope, and owner gate:

loopx project-skill install \
  --project . \
  --skill loopx-material \
  --surface codex \
  --execute

Validation: Read back the managed skill and the public capability
contract:

loopx project-skill status \
  --project . \
  --skill loopx-material \
  --surface codex \
  --format json

loopx material-lifecycle architecture --format json
loopx material-lifecycle skill-status \
  --project . \
  --surface codex \
  --format json

Disable / rollback: Remove the project capability envelope or profile to
stop projection and writes. Preview and then execute managed-skill removal:

loopx project-skill uninstall \
  --project . \
  --skill loopx-material \
  --surface codex

loopx project-skill uninstall \
  --project . \
  --skill loopx-material \
  --surface codex \
  --execute

Authority boundary: There is no global material-write switch in v0.3.0.
Skill installation alone does not consume material, create a source adapter,
or expand write authority.

Docs: See the Material Lifecycle guide.

Managed Project Skills & Ark Managed Agent

Activation: Managed project operations are preview-first. Install a skill
after reviewing the plan:

loopx project-skill install \
  --project . \
  --skill <skill-id> \
  --surface codex

loopx project-skill install \
  --project . \
  --skill <skill-id> \
  --surface codex \
  --execute

curl -fsSL \
  https://raw.githubusercontent.com/huangruiteng/loopx/v0.3.0/scripts/install-from-github.sh \
  | env LOOPX_SKILLS_DIR=<project-workspace>/.agents/skills \
      LOOPX_ENTRY_HOST_SURFACE=ark-managed-agent \
      LOOPX_INSTALL_SLASH_COMMANDS=0 bash

Use --surface claude-code or --surface opencode for those hosts.

Validation: Read back the managed skill. For Ark Managed Agent, generate
the one-shot Goal prompt:

loopx project-skill status \
  --project . \
  --skill <skill-id> \
  --surface codex

loopx heartbeat-prompt \
  --thin \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --runtime-profile ark_managed_agent_goal

Disable / rollback: Preview and then execute managed-skill removal:

loopx project-skill uninstall \
  --project . \
  --skill <skill-id> \
  --surface codex

loopx project-skill uninstall \
  --project . \
  --skill <skill-id> \
  --surface codex \
  --execute

Authority boundary: The generated Goal prompt is submitted once; the
Managed Agent runtime owns inner continuation. Host session state is
non-authoritative, and the host must re-read quota should-run rather than
wrap each inner iteration in turn run-once.

Docs: See project skill delivery
and the Ark host contract.

Quality & Testing

  • Change-quality model behavior is qualified against clean and adversarial Python, Rust, and TypeScript shadow cases before promotion; ordinary delivery remains bounded to the exact changed scope (#2649, #2651).
  • Fixed installers now verify manifest identity, source revision, and the digest/readback of every managed skill rather than trusting a successful copy operation (#2653, #2657).
  • Release and public-smoke contracts were aligned with current control-plane behavior. The extension timeout regression now preserves its process-tree assertion without coupling it to a one-second install-time doctor startup, the TUI bootstrap smoke preserves the supported interpreter while sanitizing existing LoopX wrappers from PATH, and temporary Git fixtures ignore user-global integrations that could write during cleanup (#2662, #2665, #2667, #2668).

Benchmarks & Integrations

  • SkillsBench supervision now preserves progress and typed failure attribution across preflight, proxy, timeout, repair, validation, scoring, and cooperative-stop boundaries. This release changes no benchmark scoring, task semantics, leaderboard, upload, submission, or permission boundary, launches no benchmark jobs, and makes no benchmark-uplift claim (#2595, #2598, #2600, #2648, #2656, #2660).

Documentation & Compatibility

  • The control-plane course now connects domain state, ordered frontier rules, recoverable replanning, guidance acknowledgement, and convergence to the shipped code paths; custom agent runner guidance distinguishes the host loop from one governed Turn (#2577, #2579, #2583, #2584, #2610, #2532).
  • Change Quality v1 receipt reads are intentionally removed. Existing experimental v1 receipts must be requalified with the current v2 protocol; LoopX does not silently preserve a legacy read path (#2617).
  • No general persisted-state migration is required. Decision Context, Material Lifecycle, Change Quality, and Ark Managed Agent integrations remain explicit capability or host activations.

Community Contributors

  • @xielixing improved the Codex CLI paste path so generated command text keeps usable line breaks (#2493). Thank you for the contribution.

Validation

The exact tagged commit 89b60891 passed:

  • pytest: 1631 passed, 2 skipped, 0 failed
  • Ruff and mypy: 0 violations / 0 errors
  • risk-based release canary: 16 selected checks, 0 failures, 0 manual holds
  • full-public: 625 checks, 0 failures, 0 timeouts
  • install, upgrade, host, version, build, Twine, and public/private boundary gates
  • actual-default one-arm Doubao qualification: 12 scenarios x 2 repeats = 24 calls, 0 failures, 0 skips

The release makes no benchmark or long-horizon outcome-uplift claim, so a matched stable-versus-candidate outcome baseline was not required.

Install & Update

New install:

curl -fsSL https://raw.githubusercontent.com/huangruiteng/loopx/main/scripts/install-from-github.sh | bash
export PATH="$HOME/.local/bin:$PATH"
loopx doctor

Existing install:

loopx update --check
loopx update --execute
loopx doctor

Full changelog

中文摘要

状态内核与控制面

  • Replan 采用有序规则并暴露可恢复 Turn 阶段;重复 vision、frontier guard 和 agent lane 推荐都更确定,CLI facade 不再承担不断增长的投影逻辑(#2585#2594#2597#2637)。
  • 新 linked worktree 会保留请求的 canonical project/Goal 路由,不再误绑定旧项目状态(#2650)。

能力与工作流

  • Change Quality 提供 exact-diff 的 prepare -> record -> verify 合同,并把 simplify、仓库原生 oracle、稀疏风险和验证收据作为主路径;shadow promotion 与普通交付、合并权限相互独立(#2570#2604#2605#2606#2651)。
  • Decision Context 增加默认关闭的 evidence rebase、cursor commit、profile orchestration 和 outcome feedback 合同;Material Lifecycle 增加 source-backed intake、rerank、bounded explore、owner-gated cutover 与可读投影,且仅在 capability 激活后投影(#2540#2554#2563#2561#2566#2601)。
  • Managed-project delivery 与 Ark Managed Agent host entry 扩大了可安装、可续跑的 Agent host 范围,但 host adapter 不取得 LoopX 控制面权威(#2568#2616#2645#2646)。

可选能力启用与使用

以下入口都需要显式 opt-in;安装 project skill 只提供工作流发现,不授予写入、合并、provider 或 host 权限。

Change Quality

**启用:**安装 managed workflow,先预览 goal policy,再执行写入:

loopx project-skill install \
  --project . \
  --skill loopx-change-quality \
  --surface codex \
  --execute

loopx configure-goal \
  --goal-id <goal-id> \
  --change-quality-enabled \
  --change-quality-safe-fix \
  --change-quality-strict-receipt

loopx configure-goal \
  --goal-id <goal-id> \
  --change-quality-enabled \
  --change-quality-safe-fix \
  --change-quality-strict-receipt \
  --execute

**验证:**对 exact final diff 执行 prepare、record、verify 和 premerge。
其中 record 使用 prepare 返回的 v2 模板:

loopx --format json change-quality prepare \
  --goal-id <goal-id> \
  --repo-path . \
  --base-ref origin/main

loopx --format json change-quality record \
  --goal-id <goal-id> \
  --repo-path . \
  --base-ref origin/main \
  --result-json <ignored-or-temporary-result.json> \
  --execute

loopx --format json change-quality verify \
  --goal-id <goal-id> \
  --repo-path . \
  --base-ref origin/main

loopx canary premerge --from-git-diff --goal-id <goal-id>

**停用 / 回退:**关闭时仍然先预览、再执行:

loopx configure-goal \
  --goal-id <goal-id> \
  --no-change-quality-enabled \
  --no-change-quality-safe-fix \
  --no-change-quality-strict-receipt

loopx configure-goal \
  --goal-id <goal-id> \
  --no-change-quality-enabled \
  --no-change-quality-safe-fix \
  --no-change-quality-strict-receipt \
  --execute

**权限边界:**该能力最多允许一次策略授权的有界修复,不授予合并权限。

**文档:**参见 Change Quality 指南

Decision Context

**启用:**v0.3.0 没有全局持久开关;显式向命令传入 private profile,才使该次
命令 opt-in。

**验证:**先运行只读 contract、profile 与 evidence 入口:

loopx decision-context architecture --format json

loopx decision-context inspect-profile \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --format json

loopx decision-context prepare-evidence \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --profile <ignored-private-profile.json> \
  --decision-id <stable-decision-id> \
  --format json

**停用 / 回退:**后续命令不再传 private profile 即停用;没有需要清理的
持久开关。

**权限边界:**这些命令只检查或准备 evidence;semantic rebase、proposal、
writeback 和 cursor commit 仍需项目分别授权。

**文档:**参见 Decision Context 指南

Material Lifecycle

**启用:**安装官方 project workflow;项目还必须显式提供 goal-scoped
material_lifecycle capability envelope、profile、source adapter、write
scope 与 owner gate:

loopx project-skill install \
  --project . \
  --skill loopx-material \
  --surface codex \
  --execute

**验证:**读回 managed skill 和 public capability contract:

loopx project-skill status \
  --project . \
  --skill loopx-material \
  --surface codex \
  --format json

loopx material-lifecycle architecture --format json
loopx material-lifecycle skill-status \
  --project . \
  --surface codex \
  --format json

**停用 / 回退:**移除 capability envelope/profile 即停止投影与写入;再按
preview-first 流程移除 managed skill:

loopx project-skill uninstall \
  --project . \
  --skill loopx-material \
  --surface codex

loopx project-skill uninstall \
  --project . \
  --skill loopx-material \
  --surface codex \
  --execute

**权限边界:**v0.3.0 没有全局 material-write 开关。安装 skill 本身不会
消费 material、创建 source adapter 或扩大写权限。

**文档:**参见 Material Lifecycle 指南

Managed Project Skills & Ark Managed Agent

**启用:**project skill 默认只预览,确认后再执行;Ark Managed Agent 使用
release-owned skills 和一次性 host entry:

loopx project-skill install \
  --project . \
  --skill <skill-id> \
  --surface codex

loopx project-skill install \
  --project . \
  --skill <skill-id> \
  --surface codex \
  --execute

curl -fsSL \
  https://raw.githubusercontent.com/huangruiteng/loopx/v0.3.0/scripts/install-from-github.sh \
  | env LOOPX_SKILLS_DIR=<project-workspace>/.agents/skills \
      LOOPX_ENTRY_HOST_SURFACE=ark-managed-agent \
      LOOPX_INSTALL_SLASH_COMMANDS=0 bash

其他 host 可用 --surface claude-code--surface opencode

**验证:**读回 managed skill;Ark host 生成一次性 Goal prompt:

loopx project-skill status \
  --project . \
  --skill <skill-id> \
  --surface codex

loopx heartbeat-prompt \
  --thin \
  --goal-id <goal-id> \
  --agent-id <agent-id> \
  --runtime-profile ark_managed_agent_goal

**停用 / 回退:**按 preview-first 流程移除 managed skill:

loopx project-skill uninstall \
  --project . \
  --skill <skill-id> \
  --surface codex

loopx project-skill uninstall \
  --project . \
  --skill <skill-id> \
  --surface codex \
  --execute

**权限边界:**Goal prompt 只提交一次,由 Managed Agent runtime 负责内部续跑;
host session 不是权威状态,续跑时应重新读取 quota should-run,不能把每次内部
迭代都包装成 turn run-once

**文档:**参见 project skill delivery
Ark host 合同

质量与测试

  • Change-quality shadow matrix 覆盖 clean/adversarial 的 Python、Rust、TypeScript 场景;固定安装器会校验 manifest、source revision 与每个 managed skill 的 digest/readback(#2649#2651#2657)。
  • Release/public smoke 合同与当前控制面同步;extension timeout 回归移除了 1 秒 doctor 启动抖动并保留 process-tree 负向断言,TUI bootstrap smoke 在清理已有 LoopX wrapper 的同时显式保留受支持解释器,临时 Git fixture 也会隔离可能在清理阶段异步写入的用户全局集成(#2662#2665#2667#2668)。

基准与集成

  • SkillsBench 在 preflight、proxy、timeout、repair、validation、scoring 与 cooperative stop 边界上保留进度和类型化失败归因(#2598#2600#2648#2656#2660)。本版本不改变 benchmark 评分、任务语义、排行榜、上传、提交或权限边界,不启动 benchmark job,也不宣称 benchmark 提升。

文档与兼容性

  • 控制面课程把 domain state、有序 frontier、recoverable replan、guidance ACK 与 convergence 连接到真实代码,并补充 custom agent runner 集成边界(#2577#2583#2584#2610#2532)。
  • Change Quality v1 receipt 读取兼容被有意删除;现有实验性 v1 receipt 需要用 v2 重新 qualification,不保留静默 legacy read(#2617)。其他核心状态无需通用迁移,新能力仍需显式 capability/host 激活。

社区贡献者

  • @xielixing 修复 Codex CLI paste 路径的换行保真(#2493),感谢贡献。

验证

精确 tag 提交 89b60891 通过 1631 个 pytest(跳过 2,失败 0)、Ruff、mypy、risk canary、full-public、安装/升级/host、构建/Twine、公开边界,以及 12 场景 x 2 重复的 24 次 actual-default Doubao 调用(失败 0、跳过 0)。本版本不宣称 benchmark 或长周期 outcome 提升,因此无需 matched stable/candidate outcome baseline。