Skip to content

feat(scheduler): add Trae App heartbeat host - #4271

Merged
huangruiteng merged 13 commits into
loopx-project:mainfrom
cocolord:codex/traex-app-heartbeat
Sep 14, 2026
Merged

huangruiteng merged 13 commits into
loopx-project:mainfrom
cocolord:codex/traex-app-heartbeat

Conversation

@cocolord

@cocolord cocolord commented Sep 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • add a first-class trae_app host surface, scheduler runtime profile, agent type, and --trae_app CLI path
  • reuse the provider-neutral App automation cadence, backoff, ACK, and liveness contracts while keeping Trae state isolated from Codex local automation storage
  • preserve traex-cli and its existing visible /goal path as a separate host
  • keep non-terminal settled heartbeat turns active for a fresh successor turn, and stop only on terminal outcomes
  • preserve Codex App compatibility through a lossless legacy projection while making scheduler_hint.app_automation the canonical App protocol
  • document the host boundary and add focused activation, parity, scheduler, thread-binding, and continuation coverage

Validation

  • related Python tests: 715 passed
  • TypeScript control-plane tests: 1235 passed, 1 skipped
  • repository-configured python -m mypy: passed (22 source files)
  • CI-scope Ruff (tests, loopx/canary, loopx/control_plane, loopx/domain_packs, loopx/presentation): passed
  • git diff hygiene and DCO trailers: passed
  • loopx check: public/private boundary clean for all candidate files

Pre-merge canary notes

loopx canary premerge --from-git-diff --git-diff-base origin/main selected 18 checks. Sixteen passed. The two remaining failures are non-feature gate issues:

  • examples/control_plane/hot-path-interface-budget-smoke.py reports dashboard_status_json at 18,930 chars versus an 18,500 budget. Clean detached worktrees at both the earlier base and current origin/main produce the identical failure and size, confirming a baseline failure rather than a branch regression.
  • examples/install-local-smoke.py reached the gate's fixed 120-second timeout. The exact-head GitHub stage2c (installed 0) job passed, so the install path is covered by the repository CI runner.

Exact-head GitHub CI completed successfully: DCO, dependency review, release/frontstage builds, dashboard acceptance, kernel static checks, Node minimum/forward compatibility, all four Python shards, installed-package, e2e, mutants, Windows, aggregate pytest, and Sonar passed. The Python Tests workflow concluded success; GitHub's check-run projection still displayed the already-completed merge-gate job as in_progress, although every job step, including the qualification rejection step, completed successfully.

Review notes

Changed surfaces: host activation/onboarding, scheduler execution context and hints, heartbeat prompt/liveness projection, quota ACK/failure state scoping, public protocol docs, and focused validation.

Only the real codex_app host may read the Codex local automation store. trae_app remains a distinct identity and state scope; it shares only the provider-neutral scheduler behavior. No benchmark jobs, scoring behavior, permission boundary changes, private state, raw logs, or generated evidence are included.

The bounded future-facing pass was applied at the existing typed App automation boundary; no second Trae-specific scheduler authority was introduced. Independent review is requested; this PR is not intended for self-merge.

@cocolord
cocolord force-pushed the codex/traex-app-heartbeat branch from ff4402b to 8e5bcdc Compare September 12, 2026 05:58
@cocolord cocolord changed the title feat(scheduler): add TraeX App heartbeat host feat(scheduler): add Trae App heartbeat host Sep 12, 2026
@cocolord cocolord closed this Sep 12, 2026
@cocolord
cocolord deleted the codex/traex-app-heartbeat branch September 12, 2026 05:59
@cocolord
cocolord restored the codex/traex-app-heartbeat branch September 12, 2026 06:00
@cocolord cocolord reopened this Sep 12, 2026
@cocolord
cocolord force-pushed the codex/traex-app-heartbeat branch from 8e5bcdc to 5f4e9db Compare September 12, 2026 06:31

@cocolord cocolord 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.

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

Reviewed exact head 5f4e9dbcf652014e946f7645a319be19b2ae3507 against origin/main@18fda32fda59e1ed1101c723eb3bfbc981b74bfd. Because this is an author-owned PR, this is posted as a COMMENTED review; the technical verdict is REQUEST_CHANGES and does not grant merge authority.

动机 / Motivation

这个 PR 解决的是一个真实且高频的连续执行缺口:Trae App 中一个 bounded turn 完成后,LoopX 没有 host-owned successor wake,剩余目标会停住,直到用户再次手动输入。补充独立的 trae_app host/runtime/state identity,并保留现有 traex-cli /goal 路径,是合理且必要的。

This PR addresses a real liveness gap: after a bounded Trae App turn settles, LoopX has no host-owned successor wake, so unfinished goal work can remain stranded until the user prompts again. Adding a distinct trae_app host/runtime/state identity while preserving the existing traex-cli /goal path is justified.

改动思路 / Approach

整体方向正确:复用现有 App cadence/backoff/ACK/liveness 算法,只在 host identity、thread binding、activation effect、scheduler-state surface 和 Codex-only local-store authority 上分流。这样避免实现第二套 scheduler,同时确保 Trae 不会读取或修改 Codex automation store。显式选择 trae_app 才会激活该路径,现有 Codex、generic CLI 和 traex-cli 默认行为保持隔离。

The overall design is sound: reuse the existing App cadence/backoff/ACK/liveness algorithm, while separating host identity, thread binding, activation effects, scheduler-state scope, and Codex-only local-store authority. This avoids a second scheduler implementation and keeps Trae away from the Codex automation store. The path is explicitly opt-in through trae_app; existing Codex, generic CLI, and traex-cli defaults remain isolated.

具体改动 / Changes

  • SchedulerExecutionContext.app_automation_applicable and apply_scheduler_execution_context admit the new hosted App profile.
  • _SchedulerHintBuilder.build emits Trae-scoped host facts and runnable ACK/failure commands without the Codex local fallback.
  • _trae_app_activation creates the host-owned Trae automation activation packet.
  • scheduler_ack._scheduler_packet reads the cadence packet and commits receipts under surface=trae_app.

The implementation threads the identity through guided start/onboarding, heartbeat prompt regeneration, quota decisions, state persistence, ACK/failure handling, ambient TRAECLI_THREAD_ID, documentation, and focused parity/isolation tests. The scope is broad but proportionate to the end-to-end host contract.

对主干的风险 / Main risk

[P1][blocking] trae_app 的公开 cadence packet 身份和 applicability 自相矛盾。

触发条件:以 runtime_profile=trae_app / --trae_app 执行 quota should-run,且存在需要 apply 或 ACK 的 App cadence transition。

路径:SchedulerExecutionContext.projection → apply_scheduler_execution_context → scheduler_hint.codex_app → scheduler_ack._scheduler_packet。首个矛盾可见于 loopx/control_plane/scheduler/execution_context.py:185。

同一个公开 packet 一方面声明 host_surface=trae_app 且 codex_app_applicability=not_applicable,另一方面又把 scheduler_hint.codex_app.applicability 标成 applicable,并继续使用 codex_app_* schema ids 和 scheduler_hint.codex_app.stateful_backoff。scheduler_ack._scheduler_packet 还显式把 trae_app 映射回 codex_app packet key。

结果是:按 execution context 行事的 consumer 可能因为 Codex 不适用而跳过 Trae 必须执行的 cadence update;按 packet key 行事的 consumer 又会把 Trae authority 误认为 Codex。当前测试 test_trae_app_runtime_profile_preserves_host_backoff_and_identity 先断言 Codex 不适用,再读取 hint["codex_app"],因此把矛盾编码成了期望,而不是独立检出它。

Minimum repair: make the shared public cadence/applicability contract provider-neutral (for example, app_automation plus provider/host_surface) or emit a distinct trae_app packet. Update ACK/failure lookup, compact/effect consumers, and docs together; retain a bounded codex_app compatibility path only for actual Codex requests. Add a real quota-CLI regression that requires one self-consistent Trae packet identity and verifies that generated ACK/failure commands read and write only trae_app state.

Validation evidence:

  • Real generated Trae ACK and failure commands both returned successfully, persisted under surface=trae_app, and failure replay produced host_update_failure_suppressed; no Codex local-store dependency was observed.
  • The public-packet negative case failed as described above and is the blocking result.
  • Exact-head CI run 34678346611 has 25/27 checks passing. The Windows failure and downstream merge-gate failure reproduce on origin/main run 34674379627, so they are baseline-equivalent rather than introduced by this diff.
  • The focused suite passed 461/461 with the repository's venv interpreter available to subprocess tests. A later clean rerun reported 451 passed / 10 failed because the restricted child environment could not resolve that interpreter; all 10 are existing traex-cli subprocess cases, not changed-branch failures.
  • No live Trae App automation was mutated during review. An external automation_update/readback integration remains residual validation after the protocol repair.

我的整体评价 / Overall assessment

REQUEST_CHANGES. 这项改动对 Trae App 明显是正向的:补齐了 successor heartbeat,边界选择合理,状态与 Codex local authority 也已隔离;代码量与问题规模相称。当前唯一确认的 blocker 是新公开协议把独立的 trae_app authority 装进 Codex-specific container,违反了本 PR 自己建立的一等身份。由于这条 API 尚未发布,现在修正成本最低。修复 packet identity、补齐真实 CLI contract test 并重跑风险对应验证后,我预期可以进入下一轮 approval review。

The change is directionally strong and proportionate: it closes the successor-heartbeat gap, preserves the existing scheduler owner, and isolates Trae state from Codex local authority. The single confirmed blocker is that the new public protocol puts first-class trae_app authority inside a Codex-specific container. This is the least expensive point to correct that API. After repairing the packet identity, adding the real CLI contract regression, and rerunning the risk-matched checks, I expect the PR to be ready for an approval pass.

@cocolord
cocolord force-pushed the codex/traex-app-heartbeat branch 5 times, most recently from 373e305 to 94b8761 Compare September 12, 2026 11:36

@cocolord cocolord 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.

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机

Trae App 中的 LoopX goal 在完成一个有界阶段后,可能因缺少 host-owned successor wake 而停在非终态,表现为“只完成一部分、没有后续心跳推进”。主干此前只有 Codex App 的自动化路径和 traex-cli 的可见 /goal 路径,没有独立、可持久化且可回读的 trae_app host identity。

改动思路

把 trae_app 建模为独立的 typed host/runtime/state identity,同时复用现有 provider-neutral App automation 的 cadence、backoff、ACK、failure 和 liveness 规则。Canonical 协议统一为 scheduler_hint.app_automation;Codex 仅保留 lossless scheduler_hint.codex_app compatibility projection。Trae 不读取或写入 Codex 本地 automation store,也不接收 Codex alias/fallback。

具体改动

  • 增加 HostSurface.TRAE_APP、SchedulerRuntimeProfile.TRAE_APP、--trae_app 和 TRAECLI_THREAD_ID 的完整入口与线程绑定。
  • 将非终态 settled heartbeat 保持为 active,使 host 能创建下一轮;仅 terminal outcome 停止。
  • 将 scheduler packet、state key、ACK/failure command 和 TypeScript persistence 按 surface 绑定;surface/state/operation 冲突时 fail closed。
  • 保留 traex-cli 及其 /goal 路径,不把 Trae 冒充为 Codex。
  • 保留 Codex v0 packet/reset-token compatibility,并用真实 CLI-to-TypeScript follow-up、compact envelope equality、fixed reset oracle 和 onboarding smoke 覆盖回归。

对主干的风险

主要风险是跨 host identity、scheduler state、compact envelope 与 compatibility projection 的联动回归。审查逐项核对了 typed state rules、domain neutrality、behavior-change disclosure 和 guidance-vs-obligation:没有 substring/prose-only 状态分类,没有把产品特定措辞放进通用控制面,也没有静默改变既有 host 的默认行为。trae_app 仅在显式选择时启用,Codex、SSH、generic CLI、goal runtime 与 traex-cli 维持原路径。

剩余边界是本次 review 没有实际修改用户的 live Trae automation;仓库内已覆盖生成命令、ACK/failure receipt 和持久化 readback。Premerge 的两个非 feature 失败已界定:install smoke 命中固定 120 秒超时,而 exact-head installed-package CI 通过;hot-path budget 的 18930 > 18500 在 exact base 上完全相同,不是本 PR 引入。

我的整体评价

对 exact base f88aae3a63c9a88fb2ddd3477f5b8dc3a05c2e0f 到 exact head 94b87611c1d41f9ac5a119a886e1ab46b11813b7 的 Standards 与 Spec 双轴审查均未发现可归因于本 PR 的 finding。结构化 review policy revision 3 一致性校验通过,结论为 APPROVE。由于作者不能在 GitHub 对自己的 PR 提交正式 approval,本 review 以 COMMENTED 发布;它不是合并动作。

验证证据:715 个相关 Python tests 通过;TypeScript control-plane 1235 passed、1 skipped;typecheck、repository-configured mypy(22 files)、CI-scope Ruff、diff hygiene、DCO、private/credential scans 和三个 focused smokes 通过。Exact-head GitHub workflow 已 completed/success,所有执行步骤成功;GitHub check-run projection 仍将已完成的 merge-gate 显示为 in_progress,属于远端展示状态漂移。

English verdict:

APPROVE for exact base f88aae3a63c9a88fb2ddd3477f5b8dc3a05c2e0f and exact head 94b87611c1d41f9ac5a119a886e1ab46b11813b7. The implementation gives Trae App a first-class trae_app host/runtime/state identity, reuses the provider-neutral App automation policy, preserves Codex compatibility without leaking Codex authority or storage into Trae, and keeps traex-cli separate.

Independent Standards and Spec reviews found no attributable issues. Typed state classification, domain-neutral control-plane wording, explicit behavior disclosure, and machine-enforced obligations were all checked. The relevant Python, TypeScript, type, lint, smoke, boundary, and exact-head CI evidence passed, subject only to the documented base-equivalent/local-timeout premerge exceptions. The GitHub workflow itself concluded successfully; the lingering merge-gate in-progress label is a stale check-run projection after all of its steps completed successfully.

This is an author-owned PR, so GitHub does not permit formal self-approval. I am therefore recording the approval conclusion as a COMMENTED review. No merge is performed by this review.

@huangruiteng huangruiteng 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.

动机

该 PR 为 Trae App 增加一等 heartbeat automation host,并把调度、ACK/failure、Turn receipt 和状态存储从 Codex 专属命名抽象为 provider-neutral 的 App automation,同时保持 Codex 兼容投影。目标是让 Trae 使用独立的 host/state identity,而不是误写 Codex 本地自动化存储。

改动思路

通过 HostSurface.TRAE_APP、SchedulerRuntimeProfile.TRAE_APP 和 APP_HEARTBEAT_SETTLEMENT_RUNTIME_PROFILES 建立类型化边界;scheduler_hint 生成 app_automation canonical packet,Codex 再由兼容层投影旧 codex_app 形状。CLI、heartbeat follow-up、onboarding 与 start-goal 复用同一 execution context,并在 host facts 中绑定 surface/state/reset identity。Trae 走 --trae_app 和独立 state key,Codex fallback 仅在 Codex host 上投影。

具体改动

关键代码讲解

  • execution_context.py:新增 Trae host/profile、host automation applicability 和 guided-start/settlement 集合。
  • scheduler_hint.py:统一构造 App cadence/backoff/ACK/failure;仅 Codex 通过 app_automation_compat.py 生成 legacy codex_app,Trae 不生成 Codex fallback。
  • bootstrap_prompt.py 与 heartbeat_followup_cli.ts:支持 --trae_app,校验 host-facts 的 surface/state/RRULE 一致性,并拒绝 Trae 使用 Codex RRULE 别名。
  • accountable_settlement.py:将 Codex/Trae 共同纳入 hosted-App settlement,保持 Turn receipt 与 quota settlement 绑定。

对主干的风险

发现两个合并前阻塞,均由真实 git merge-tree --write-tree origin/main origin/pr-4271-new 复现:loopx/control_plane/heartbeat/bootstrap_prompt.py 和 docs/reference/contracts/interface-budget-contract.md 均发生内容冲突。前者是 heartbeat prompt 的生成/解析入口,后者同时被 interface-budget smoke 和 host/capability 契约引用;直接选一侧会丢失另一侧的 bootstrap/Trae 参数或造成文档与 smoke 不一致。GitHub 当前也报告 mergeStateStatus=DIRTY,因此 exact head 不能安全合并。

验证方面,exact head 的 Trae/Codex scheduler Python focused subset 为 88 passed、128 deselected,六个变更相关 TypeScript suites 为 60 passed;更大 Python 集合在 342 个通过后因长时间等待手动中断。请先 rebase 当前 main,保留 canonical heartbeat/bootstrap 与接口预算契约,再重跑 host activation/onboarding、scheduler、interface-budget 及 packaged-surface smokes。

我的整体评价

Trae/Codex 隔离和 provider-neutral scheduler 方向正确,且 focused tests 支持主要路径;但冲突落在 prompt 生成器和接口预算这两个行为/验证入口,当前不能批准。请提交干净 rebase,确认 --trae_app prompt 可 round-trip、旧 Codex projection 不变,并完成上述风险对应验证后请求 re-review。当前结论:需要修改。

English verdict:

REQUEST_CHANGES: The Trae App boundary and Codex compatibility projection are coherent; 88 focused Python tests and 60 changed TypeScript tests pass. However, exact head 94b87611c1d41f9ac5a119a886e1ab46b11813b7 is DIRTY against current main, with real conflicts in loopx/control_plane/heartbeat/bootstrap_prompt.py and docs/reference/contracts/interface-budget-contract.md. Rebase, reconcile both canonical contracts, rerun host/bootstrap/interface-budget and packaged-surface smokes, then request re-review.

@huangruiteng huangruiteng 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.

动机

该 PR 为 Trae App 增加一等 heartbeat automation host,并把调度、ACK/failure、Turn receipt 和状态存储从 Codex 专属命名抽象为 provider-neutral 的 App automation,同时保持 Codex 兼容投影。目标是让 Trae 使用独立的 host/state identity,而不是误写 Codex 本地自动化存储。

改动思路

通过 HostSurface.TRAE_APP、SchedulerRuntimeProfile.TRAE_APP 和 APP_HEARTBEAT_SETTLEMENT_RUNTIME_PROFILES 建立类型化边界;scheduler_hint 生成 app_automation canonical packet,Codex 再由兼容层投影旧 codex_app 形状。CLI、heartbeat follow-up、onboarding 与 start-goal 复用同一 execution context,并在 host facts 中绑定 surface/state/reset identity。Trae 走 --trae_app 和独立 state key,Codex fallback 仅在 Codex host 上投影。

具体改动

关键代码讲解

  • execution_context.py:新增 Trae host/profile、host automation applicability 和 guided-start/settlement 集合。
  • scheduler_hint.py:统一构造 App cadence/backoff/ACK/failure;仅 Codex 通过 app_automation_compat.py 生成 legacy codex_app,Trae 不生成 Codex fallback。
  • bootstrap_prompt.py 与 heartbeat_followup_cli.ts:支持 --trae_app,校验 host-facts 的 surface/state/RRULE 一致性,并拒绝 Trae 使用 Codex RRULE 别名。
  • accountable_settlement.py:将 Codex/Trae 共同纳入 hosted-App settlement,保持 Turn receipt 与 quota settlement 绑定。

对主干的风险

发现两个合并前阻塞,均由真实 git merge-tree --write-tree origin/main origin/pr-4271-new 复现:loopx/control_plane/heartbeat/bootstrap_prompt.py 和 docs/reference/contracts/interface-budget-contract.md 均发生内容冲突。前者是 heartbeat prompt 的生成/解析入口,后者同时被 interface-budget smoke 和 host/capability 契约引用;直接选一侧会丢失另一侧的 bootstrap/Trae 参数或造成文档与 smoke 不一致。GitHub 当前也报告 mergeStateStatus=DIRTY,因此 exact head 不能安全合并。

验证方面,exact head 的 Trae/Codex scheduler Python focused subset 为 88 passed、128 deselected,六个变更相关 TypeScript suites 为 60 passed;更大 Python 集合在 342 个通过后因长时间等待手动中断。请先 rebase 当前 main,保留 canonical heartbeat/bootstrap 与接口预算契约,再重跑 host activation/onboarding、scheduler、interface-budget 及 packaged-surface smokes。

我的整体评价

Trae/Codex 隔离和 provider-neutral scheduler 方向正确,且 focused tests 支持主要路径;但冲突落在 prompt 生成器和接口预算这两个行为/验证入口,当前不能批准。请提交干净 rebase,确认 --trae_app prompt 可 round-trip、旧 Codex projection 不变,并完成上述风险对应验证后请求 re-review。当前结论:需要修改。

English verdict:

REQUEST_CHANGES: The Trae App boundary and Codex compatibility projection are coherent; 88 focused Python tests and 60 changed TypeScript tests pass. However, exact head 94b87611c1d41f9ac5a119a886e1ab46b11813b7 is DIRTY against current main, with real conflicts in loopx/control_plane/heartbeat/bootstrap_prompt.py and docs/reference/contracts/interface-budget-contract.md. Rebase, reconcile both canonical contracts, rerun host/bootstrap/interface-budget and packaged-surface smokes, then request re-review.

@huangruiteng huangruiteng 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.

动机

该 PR 为 Trae App 增加一等 heartbeat automation host,并把调度、ACK/failure、Turn receipt 和状态存储从 Codex 专属命名抽象为 provider-neutral 的 App automation,同时保持 Codex 兼容投影。目标是让 Trae 使用独立的 host/state identity,而不是误写 Codex 本地自动化存储。

改动思路

通过 HostSurface.TRAE_APP、SchedulerRuntimeProfile.TRAE_APP 和 APP_HEARTBEAT_SETTLEMENT_RUNTIME_PROFILES 建立类型化边界;scheduler_hint 生成 app_automation canonical packet,Codex 再由兼容层投影旧 codex_app 形状。CLI、heartbeat follow-up、onboarding 与 start-goal 复用同一 execution context,并在 host facts 中绑定 surface/state/reset identity。Trae 走 --trae_app 和独立 state key,Codex fallback 仅在 Codex host 上投影。

具体改动

关键代码讲解

  • execution_context.py:新增 Trae host/profile、host automation applicability 和 guided-start/settlement 集合。
  • scheduler_hint.py:统一构造 App cadence/backoff/ACK/failure;仅 Codex 通过 app_automation_compat.py 生成 legacy codex_app,Trae 不生成 Codex fallback。
  • bootstrap_prompt.py 与 heartbeat_followup_cli.ts:支持 --trae_app,校验 host-facts 的 surface/state/RRULE 一致性,并拒绝 Trae 使用 Codex RRULE 别名。
  • accountable_settlement.py:将 Codex/Trae 共同纳入 hosted-App settlement,保持 Turn receipt 与 quota settlement 绑定。

对主干的风险

发现两个合并前阻塞,均由真实 git merge-tree --write-tree origin/main origin/pr-4271-new 复现:loopx/control_plane/heartbeat/bootstrap_prompt.py 和 docs/reference/contracts/interface-budget-contract.md 均发生内容冲突。前者是 heartbeat prompt 的生成/解析入口,后者同时被 interface-budget smoke 和 host/capability 契约引用;直接选一侧会丢失另一侧的 bootstrap/Trae 参数或造成文档与 smoke 不一致。GitHub 当前也报告 mergeStateStatus=DIRTY,因此 exact head 不能安全合并。

验证方面,exact head 的 Trae/Codex scheduler Python focused subset 为 88 passed、128 deselected,六个变更相关 TypeScript suites 为 60 passed;更大 Python 集合在 342 个通过后因长时间等待手动中断。请先 rebase 当前 main,保留 canonical heartbeat/bootstrap 与接口预算契约,再重跑 host activation/onboarding、scheduler、interface-budget 及 packaged-surface smokes。

我的整体评价

Trae/Codex 隔离和 provider-neutral scheduler 方向正确,且 focused tests 支持主要路径;但冲突落在 prompt 生成器和接口预算这两个行为/验证入口,当前不能批准。请提交干净 rebase,确认 --trae_app prompt 可 round-trip、旧 Codex projection 不变,并完成上述风险对应验证后请求 re-review。当前结论:需要修改。

English verdict: REQUEST_CHANGES: The Trae App boundary and Codex compatibility projection are coherent; 88 focused Python tests and 60 changed TypeScript tests pass. However, exact head 94b87611c1d41f9ac5a119a886e1ab46b11813b7 is DIRTY against current main, with real conflicts in loopx/control_plane/heartbeat/bootstrap_prompt.py and docs/reference/contracts/interface-budget-contract.md. Rebase, reconcile both canonical contracts, rerun host/bootstrap/interface-budget and packaged-surface smokes, then request re-review.

@huangruiteng
huangruiteng force-pushed the codex/traex-app-heartbeat branch from 94b8761 to 2852542 Compare September 14, 2026 04:18
cocolord and others added 11 commits September 14, 2026 12:19
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
@huangruiteng
huangruiteng force-pushed the codex/traex-app-heartbeat branch from 2852542 to 4344a1b Compare September 14, 2026 04:21
@huangruiteng

Copy link
Copy Markdown
Collaborator

Rebased and repaired against current main at a371a30bf5071ac7a1bd43d8d0a050406bd44de5; exact head is 4344a1b886208c6e391b71564ede02becce8e752.

本轮处理:

  • resolved loopx/control_plane/heartbeat/bootstrap_prompt.py by retaining current v2 canonical heartbeat bootstrap and adding explicit trae_app identity emission/parsing, including a real CLI round-trip regression;
  • resolved docs/reference/contracts/interface-budget-contract.md by retaining current-main dashboard ceiling and aligning the quota row with this PR's canonical app_automation + Codex compatibility projection (14,000 chars / 350 nested keys).

Validation:

  • current-head bootstrap regression: 12 passed;
  • current-head changed TypeScript suites: 61 passed;
  • current-head hot-path interface-budget smoke: passed (quota 13,838/14,000, dashboard 18,930/19,500);
  • pre-latest-main host/scheduler focused Python suite: 372 passed;
  • changed-file Ruff: passed;
  • host/onboarding, heartbeat prompt/quota, quota plan, scheduler compaction/policy, status/quota parity, packaged-install and update smokes: passed;
  • source-checkout premerge canary: diff hygiene, compile, risk-profile and public/private boundary checks passed. The only catalog failure was examples/install-local-smoke.py timing out at its fixed 120s limit; the same timeout reproduces standalone and is recorded as a baseline/environment hold. No live Trae automation was mutated.

冲突入口与 Trae/Codex identity 已完成收敛,旧 Codex projection 与 traex-cli 路径保持隔离;请求重新检查后可按 exact head 合并。

@huangruiteng huangruiteng 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.

Approved for exact head 4344a1b886208c6e391b71564ede02becce8e752 against current main a371a30bf5071ac7a1bd43d8d0a050406bd44de5.

The requested rebase conflicts in the canonical heartbeat bootstrap and interface-budget contract are resolved. The Trae App bootstrap now round-trips its explicit host identity while preserving the current v2 Codex compatibility path; the quota budget contract matches the provider-neutral packet and current main dashboard ceiling.

Evidence: all GitHub required checks passed, including Sign-off, dependency review, build, kernel static checks, Node minimum/forward compatibility, dashboard acceptance, Windows PowerShell, four test shards, stage2c e2e/installed/mutants/correctness, pytest, and merge-gate. Local focused host/scheduler Python (372 passed before the final main fast-forward; 12 passed on the final head), TypeScript (61 passed), interface-budget, onboarding/heartbeat/scheduler smokes, changed-file Ruff, and install/update package smokes passed. The standalone install-local smoke timeout is a known environment/baseline hold and is not a GitHub check failure.

No live Trae automation was mutated. Ready to merge.

@huangruiteng
huangruiteng merged commit fa731a8 into loopx-project:main Sep 14, 2026
27 checks passed
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