Skip to content

Commit 1708581

Browse files
authored
Merge pull request #5224 from loopx-project/codex/release-v1.2.2-smoke-lifecycle
fix(ci): complete RFC metadata and stop disposable profile runtime
2 parents d29d902 + 8464141 commit 1708581

6 files changed

Lines changed: 46 additions & 9 deletions

‎docs/architecture/rfcs/README.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,12 @@ failure leaves the generated files untouched.
193193
synthetic drift fixture plan are proposed. No direction declaration,
194194
reducer, runtime consumer, Vision writer, scheduler effect, or provider
195195
integration has shipped.
196+
- [Goal Continuity Across Restart and Replacement](goal-immutability-coherence-defense-v0.md)
197+
([中文版](goal-immutability-coherence-defense-v0.zh-CN.md))
198+
- **Delivery on `main`:** Non-normative follow-up design record.
199+
- **Current boundary:** Retains qualification scenarios under existing Goal
200+
instance, direction, amendment and handoff owners; combined journeys remain
201+
unqualified and no new runtime contract is introduced.
196202
- [Goal Artifact Lifecycle Projection v0](goal-artifact-lifecycle-projection-v0.md)
197203
([中文版](goal-artifact-lifecycle-projection-v0.zh-CN.md))
198204
- **Delivery on `main`:** Proposal only.

‎docs/architecture/rfcs/STATUS.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ appendix may keep dated history, but no dated log heading may precede it.
1818

1919
[中文版](STATUS.zh-CN.md) is the semantic mirror of this file.
2020

21-
## Accepted (39)
21+
## Accepted (40)
2222

2323
| RFC | Header status | Supersedes / closes | Ledger |
2424
| --- | --- | --- | --- |
@@ -36,6 +36,7 @@ appendix may keep dated history, but no dated log heading may precede it.
3636
| [RFC: Goal Artifact Lifecycle Projection (milestone / guard / next-transition) v0](goal-artifact-lifecycle-projection-v0.md) | Accepted | none | — |
3737
| [RFC: Goal Channel Collaboration v0](goal-channel-collaboration-v0.md) | Accepted | none | — |
3838
| [RFC: Goal Direction Baseline (v0)](goal-direction-baseline-v0.md) | Accepted | none | — |
39+
| [Design follow-up: Goal continuity across restart and replacement](goal-immutability-coherence-defense-v0.md) | Accepted | none | — |
3940
| [Goal Instance Identity and Orphan Recovery (v0)](goal-instance-identity-and-orphan-recovery-v0.md) | Accepted | none | — |
4041
| [RFC: Goal-scoped Capability Portfolio and Connector Lifecycle (v0)](goal-scoped-capability-portfolio-v0.md) | Accepted | none | — |
4142
| [RFC: Per-Goal Usage, Token, and Cost Surfacing v0](goal-usage-token-cost-v0.md) | Accepted | none | — |
@@ -58,7 +59,7 @@ appendix may keep dated history, but no dated log heading may precede it.
5859
| [RFC: Research Exploration Control Plane v0](research-exploration-control-plane-v0.md) | Accepted | none | — |
5960
| [RFC: Semantic Vocabulary Convergence and Commit-Time Drift Checks (v0)](semantic-vocabulary-convergence-v0.md) | Accepted | none | [5 entries](ledger/semantic-vocabulary-convergence-v0/) |
6061
| [RFC: Shared Goal Alignment and Governed Amendment Protocol (v0)](shared-goal-alignment-and-governed-amendment-v0.md) | Accepted | none | [2 entries](ledger/shared-goal-alignment-and-governed-amendment-v0/) |
61-
| [RFC: LoopX Shared Control-Plane Authority and Pluggable State Providers (v0)](shared-goal-authority-state-provider-v0.md) | Accepted | none | [22 entries](ledger/shared-goal-authority-state-provider-v0/) |
62+
| [RFC: LoopX Shared Control-Plane Authority and Pluggable State Providers (v0)](shared-goal-authority-state-provider-v0.md) | Accepted | none | [23 entries](ledger/shared-goal-authority-state-provider-v0/) |
6263
| [RFC: Single-Owner Local Daemon (v0)](single-owner-local-daemon-v0.md) | Accepted | none | — |
6364
| [RFC: TypeScript Control-Plane Migration Direction v0](typescript-control-plane-migration-v0.md) | Accepted | none | [12 entries](ledger/typescript-control-plane-migration-v0/) |
6465

‎docs/architecture/rfcs/STATUS.zh-CN.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
[English](STATUS.md) 与本文互为语义镜像。
1717

18-
## 已接受 (39)
18+
## 已接受 (40)
1919

2020
| RFC | 头部状态 | 替代 / 关闭 | Ledger |
2121
| --- | --- | --- | --- |
@@ -33,6 +33,7 @@
3333
| [RFC:Goal Artifact 生命周期投影(milestone / guard / next-transition)v0](goal-artifact-lifecycle-projection-v0.zh-CN.md) | 已接受 | 无 | — |
3434
| [RFC: Goal Channel 协作模型 v0](goal-channel-collaboration-v0.zh-CN.md) | 已接受 | 无 | — |
3535
| [RFC:Goal Direction Baseline(目标方向基线)v0](goal-direction-baseline-v0.zh-CN.md) | 已接受 | 无 | — |
36+
| [后续设计:重启与实例替换中的 Goal 连续性](goal-immutability-coherence-defense-v0.zh-CN.md) | 已接受 | none | — |
3637
| [Goal 实例身份与孤儿状态恢复(v0)](goal-instance-identity-and-orphan-recovery-v0.zh-CN.md) | 已接受 | 无 | — |
3738
| [RFC:Goal 级能力组合与 Connector 生命周期(v0)](goal-scoped-capability-portfolio-v0.zh-CN.md) | 已接受 | 无 | — |
3839
| [RFC: Per-Goal Usage, Token, and Cost Surfacing v0](goal-usage-token-cost-v0.md) | 已接受 | none | — |
@@ -55,7 +56,7 @@
5556
| [RFC:研究型探索控制面 v0](research-exploration-control-plane-v0.zh-CN.md) | 已接受 | 无 | — |
5657
| [RFC:语义词表收敛与提交期漂移检查(v0)](semantic-vocabulary-convergence-v0.zh-CN.md) | 已接受 | 无 | [5 条](ledger/semantic-vocabulary-convergence-v0/) |
5758
| [RFC:共享 Goal 对齐与受治理 Amendment 协议(v0)](shared-goal-alignment-and-governed-amendment-v0.zh-CN.md) | 已接受 | 无 | [2 条](ledger/shared-goal-alignment-and-governed-amendment-v0/) |
58-
| [RFC:LoopX 共享控制面权威与可插拔状态 Provider(v0)](shared-goal-authority-state-provider-v0.zh-CN.md) | 已接受 | 无 | [22 条](ledger/shared-goal-authority-state-provider-v0/) |
59+
| [RFC:LoopX 共享控制面权威与可插拔状态 Provider(v0)](shared-goal-authority-state-provider-v0.zh-CN.md) | 已接受 | 无 | [23 条](ledger/shared-goal-authority-state-provider-v0/) |
5960
| [RFC: Single-Owner Local Daemon (v0)](single-owner-local-daemon-v0.md) | 已接受 | none | — |
6061
| [RFC:LoopX 控制面 TypeScript 渐进迁移方向 v0](typescript-control-plane-migration-v0.zh-CN.md) | 已接受 | 无 | [12 条](ledger/typescript-control-plane-migration-v0/) |
6162

‎docs/architecture/rfcs/goal-immutability-coherence-defense-v0.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# Design follow-up: Goal continuity across restart and replacement
22

3-
- **Status:** Deferred design note; non-normative, not an accepted new runtime contract.
3+
- **RFC status:** Accepted (non-normative design follow-up).
4+
- **Supersedes / closes:** none
5+
- **Delivery maturity:** Deferred design note; not an accepted new runtime contract.
46
- **Origin:** Retains useful questions from [Duang777's #5169](https://github.com/loopx-project/loopx/pull/5169), with its implementation and evidence claims narrowed during review.
5-
- **Language mirror:** [中文](goal-immutability-coherence-defense-v0.zh-CN.md).
7+
- **Semantic mirror:** [中文](goal-immutability-coherence-defense-v0.zh-CN.md).
68
- **Owning contracts:** [Goal instance identity and orphan recovery](goal-instance-identity-and-orphan-recovery-v0.md), [Goal direction baseline](goal-direction-baseline-v0.md), [governed amendment](shared-goal-alignment-and-governed-amendment-v0.md), [semantic handoff](capable-manager-semantic-handoff-v0.md), and [shared authority](shared-goal-authority-state-provider-v0.md).
79

810
This preserves follow-up design value from the original “Goal Immutability as

‎docs/architecture/rfcs/goal-immutability-coherence-defense-v0.zh-CN.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# 后续设计:重启与实例替换中的 Goal 连续性
22

3-
- **状态:** 延后设计记录;非规范性内容,不是新接受的运行时契约。
3+
- **RFC 状态:** Accepted(非规范性后续设计记录)。
4+
- **替代 / 关闭:** none
5+
- **交付成熟度:** 延后设计记录;不是新接受的运行时契约。
46
- **来源:** 保留 [Duang777 在 #5169 中提出的问题](https://github.com/loopx-project/loopx/pull/5169),评审时收窄其实现与证据宣称。
5-
- **语言镜像:** [English](goal-immutability-coherence-defense-v0.md)。
7+
- **语义镜像:** [English](goal-immutability-coherence-defense-v0.md)。
68
- **所属契约:** [Goal 实例身份与孤儿恢复](goal-instance-identity-and-orphan-recovery-v0.zh-CN.md)、[Goal 方向基线](goal-direction-baseline-v0.zh-CN.md)、[受治理的修改](shared-goal-alignment-and-governed-amendment-v0.md)、[语义交接](capable-manager-semantic-handoff-v0.zh-CN.md)、[共享权威](shared-goal-authority-state-provider-v0.md)。
79

810
这里保留原“Goal 不可变性作为一致性防御”草稿中的后续设计价值,不增加第二份

‎examples/benchmark-native-goal-installed-profile-smoke.py‎

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import subprocess
1212
import sys
1313
import tempfile
14+
from contextlib import ExitStack
1415
from pathlib import Path
1516

1617
REPO_ROOT = Path(__file__).resolve().parents[1]
@@ -76,6 +77,26 @@ def _run_profile_cli(
7677
return payload
7778

7879

80+
def _stop_profile_runtime(profile: NativeCodexProfile) -> None:
81+
# Stop only this disposable installed profile's runtime before removing
82+
# files that its idle writer can still create.
83+
payload = _run_profile_cli(
84+
profile,
85+
profile.root,
86+
"--format",
87+
"json",
88+
"doctor",
89+
"--installation-only",
90+
"--restart-runtime",
91+
)
92+
restart = payload.get("effect_runtime_restart")
93+
if not isinstance(restart, dict) or restart.get("status") not in {
94+
"stopped",
95+
"not_running",
96+
}:
97+
raise SystemExit("profile runtime shutdown did not complete")
98+
99+
79100
def _profile_authority_contains_value(profile: NativeCodexProfile, value: str) -> bool:
80101
marker = value.encode("utf-8")
81102
for root in (profile.home, profile.codex_home):
@@ -93,12 +114,16 @@ def _profile_authority_contains_value(profile: NativeCodexProfile, value: str) -
93114

94115
def main() -> int:
95116
args = _parser().parse_args()
96-
with tempfile.TemporaryDirectory(prefix="loopx-native-goal-profile-smoke-") as raw:
117+
with (
118+
tempfile.TemporaryDirectory(prefix="loopx-native-goal-profile-smoke-") as raw,
119+
ExitStack() as cleanup,
120+
):
97121
profile = install_native_codex_profile(
98122
REPO_ROOT,
99123
Path(raw) / "profile",
100124
require_clean_source=not args.allow_dirty_source,
101125
)
126+
cleanup.callback(_stop_profile_runtime, profile)
102127
profile_receipt = compact_native_codex_profile_receipt(profile)
103128
provider_key = "ARK_OPENAI_API_KEY"
104129
gateway_sentinel_key = "LOOPX_MODEL_PROVIDER_SENTINEL"

0 commit comments

Comments
 (0)