From 84641418ba393ec6dc2d90ef3bd65cdc090aea3c Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Mon, 28 Sep 2026 04:19:22 +0800 Subject: [PATCH] fix(ci): complete RFC metadata and stop disposable profile runtime Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- docs/architecture/rfcs/README.md | 6 +++++ docs/architecture/rfcs/STATUS.md | 5 ++-- docs/architecture/rfcs/STATUS.zh-CN.md | 5 ++-- .../goal-immutability-coherence-defense-v0.md | 6 +++-- ...immutability-coherence-defense-v0.zh-CN.md | 6 +++-- ...ark-native-goal-installed-profile-smoke.py | 27 ++++++++++++++++++- 6 files changed, 46 insertions(+), 9 deletions(-) diff --git a/docs/architecture/rfcs/README.md b/docs/architecture/rfcs/README.md index d0f06c3e44..52b33f7210 100644 --- a/docs/architecture/rfcs/README.md +++ b/docs/architecture/rfcs/README.md @@ -193,6 +193,12 @@ failure leaves the generated files untouched. synthetic drift fixture plan are proposed. No direction declaration, reducer, runtime consumer, Vision writer, scheduler effect, or provider integration has shipped. +- [Goal Continuity Across Restart and Replacement](goal-immutability-coherence-defense-v0.md) + ([中文版](goal-immutability-coherence-defense-v0.zh-CN.md)) + - **Delivery on `main`:** Non-normative follow-up design record. + - **Current boundary:** Retains qualification scenarios under existing Goal + instance, direction, amendment and handoff owners; combined journeys remain + unqualified and no new runtime contract is introduced. - [Goal Artifact Lifecycle Projection v0](goal-artifact-lifecycle-projection-v0.md) ([中文版](goal-artifact-lifecycle-projection-v0.zh-CN.md)) - **Delivery on `main`:** Proposal only. diff --git a/docs/architecture/rfcs/STATUS.md b/docs/architecture/rfcs/STATUS.md index 40ffc23e4e..925d892ff6 100644 --- a/docs/architecture/rfcs/STATUS.md +++ b/docs/architecture/rfcs/STATUS.md @@ -18,7 +18,7 @@ appendix may keep dated history, but no dated log heading may precede it. [中文版](STATUS.zh-CN.md) is the semantic mirror of this file. -## Accepted (39) +## Accepted (40) | RFC | Header status | Supersedes / closes | Ledger | | --- | --- | --- | --- | @@ -36,6 +36,7 @@ appendix may keep dated history, but no dated log heading may precede it. | [RFC: Goal Artifact Lifecycle Projection (milestone / guard / next-transition) v0](goal-artifact-lifecycle-projection-v0.md) | Accepted | none | — | | [RFC: Goal Channel Collaboration v0](goal-channel-collaboration-v0.md) | Accepted | none | — | | [RFC: Goal Direction Baseline (v0)](goal-direction-baseline-v0.md) | Accepted | none | — | +| [Design follow-up: Goal continuity across restart and replacement](goal-immutability-coherence-defense-v0.md) | Accepted | none | — | | [Goal Instance Identity and Orphan Recovery (v0)](goal-instance-identity-and-orphan-recovery-v0.md) | Accepted | none | — | | [RFC: Goal-scoped Capability Portfolio and Connector Lifecycle (v0)](goal-scoped-capability-portfolio-v0.md) | Accepted | none | — | | [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. | [RFC: Research Exploration Control Plane v0](research-exploration-control-plane-v0.md) | Accepted | none | — | | [RFC: Semantic Vocabulary Convergence and Commit-Time Drift Checks (v0)](semantic-vocabulary-convergence-v0.md) | Accepted | none | [5 entries](ledger/semantic-vocabulary-convergence-v0/) | | [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/) | -| [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/) | +| [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/) | | [RFC: Single-Owner Local Daemon (v0)](single-owner-local-daemon-v0.md) | Accepted | none | — | | [RFC: TypeScript Control-Plane Migration Direction v0](typescript-control-plane-migration-v0.md) | Accepted | none | [12 entries](ledger/typescript-control-plane-migration-v0/) | diff --git a/docs/architecture/rfcs/STATUS.zh-CN.md b/docs/architecture/rfcs/STATUS.zh-CN.md index 81e666a420..3c118b7ef3 100644 --- a/docs/architecture/rfcs/STATUS.zh-CN.md +++ b/docs/architecture/rfcs/STATUS.zh-CN.md @@ -15,7 +15,7 @@ [English](STATUS.md) 与本文互为语义镜像。 -## 已接受 (39) +## 已接受 (40) | RFC | 头部状态 | 替代 / 关闭 | Ledger | | --- | --- | --- | --- | @@ -33,6 +33,7 @@ | [RFC:Goal Artifact 生命周期投影(milestone / guard / next-transition)v0](goal-artifact-lifecycle-projection-v0.zh-CN.md) | 已接受 | 无 | — | | [RFC: Goal Channel 协作模型 v0](goal-channel-collaboration-v0.zh-CN.md) | 已接受 | 无 | — | | [RFC:Goal Direction Baseline(目标方向基线)v0](goal-direction-baseline-v0.zh-CN.md) | 已接受 | 无 | — | +| [后续设计:重启与实例替换中的 Goal 连续性](goal-immutability-coherence-defense-v0.zh-CN.md) | 已接受 | none | — | | [Goal 实例身份与孤儿状态恢复(v0)](goal-instance-identity-and-orphan-recovery-v0.zh-CN.md) | 已接受 | 无 | — | | [RFC:Goal 级能力组合与 Connector 生命周期(v0)](goal-scoped-capability-portfolio-v0.zh-CN.md) | 已接受 | 无 | — | | [RFC: Per-Goal Usage, Token, and Cost Surfacing v0](goal-usage-token-cost-v0.md) | 已接受 | none | — | @@ -55,7 +56,7 @@ | [RFC:研究型探索控制面 v0](research-exploration-control-plane-v0.zh-CN.md) | 已接受 | 无 | — | | [RFC:语义词表收敛与提交期漂移检查(v0)](semantic-vocabulary-convergence-v0.zh-CN.md) | 已接受 | 无 | [5 条](ledger/semantic-vocabulary-convergence-v0/) | | [RFC:共享 Goal 对齐与受治理 Amendment 协议(v0)](shared-goal-alignment-and-governed-amendment-v0.zh-CN.md) | 已接受 | 无 | [2 条](ledger/shared-goal-alignment-and-governed-amendment-v0/) | -| [RFC:LoopX 共享控制面权威与可插拔状态 Provider(v0)](shared-goal-authority-state-provider-v0.zh-CN.md) | 已接受 | 无 | [22 条](ledger/shared-goal-authority-state-provider-v0/) | +| [RFC:LoopX 共享控制面权威与可插拔状态 Provider(v0)](shared-goal-authority-state-provider-v0.zh-CN.md) | 已接受 | 无 | [23 条](ledger/shared-goal-authority-state-provider-v0/) | | [RFC: Single-Owner Local Daemon (v0)](single-owner-local-daemon-v0.md) | 已接受 | none | — | | [RFC:LoopX 控制面 TypeScript 渐进迁移方向 v0](typescript-control-plane-migration-v0.zh-CN.md) | 已接受 | 无 | [12 条](ledger/typescript-control-plane-migration-v0/) | diff --git a/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.md b/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.md index 92fa0f2933..6e2c29a3b1 100644 --- a/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.md +++ b/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.md @@ -1,8 +1,10 @@ # Design follow-up: Goal continuity across restart and replacement -- **Status:** Deferred design note; non-normative, not an accepted new runtime contract. +- **RFC status:** Accepted (non-normative design follow-up). +- **Supersedes / closes:** none +- **Delivery maturity:** Deferred design note; not an accepted new runtime contract. - **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. -- **Language mirror:** [中文](goal-immutability-coherence-defense-v0.zh-CN.md). +- **Semantic mirror:** [中文](goal-immutability-coherence-defense-v0.zh-CN.md). - **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). This preserves follow-up design value from the original “Goal Immutability as diff --git a/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.zh-CN.md b/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.zh-CN.md index db65a9a193..794a2c214d 100644 --- a/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.zh-CN.md +++ b/docs/architecture/rfcs/goal-immutability-coherence-defense-v0.zh-CN.md @@ -1,8 +1,10 @@ # 后续设计:重启与实例替换中的 Goal 连续性 -- **状态:** 延后设计记录;非规范性内容,不是新接受的运行时契约。 +- **RFC 状态:** Accepted(非规范性后续设计记录)。 +- **替代 / 关闭:** none +- **交付成熟度:** 延后设计记录;不是新接受的运行时契约。 - **来源:** 保留 [Duang777 在 #5169 中提出的问题](https://github.com/loopx-project/loopx/pull/5169),评审时收窄其实现与证据宣称。 -- **语言镜像:** [English](goal-immutability-coherence-defense-v0.md)。 +- **语义镜像:** [English](goal-immutability-coherence-defense-v0.md)。 - **所属契约:** [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)。 这里保留原“Goal 不可变性作为一致性防御”草稿中的后续设计价值,不增加第二份 diff --git a/examples/benchmark-native-goal-installed-profile-smoke.py b/examples/benchmark-native-goal-installed-profile-smoke.py index ea6e741adb..ea9a4daeb1 100755 --- a/examples/benchmark-native-goal-installed-profile-smoke.py +++ b/examples/benchmark-native-goal-installed-profile-smoke.py @@ -11,6 +11,7 @@ import subprocess import sys import tempfile +from contextlib import ExitStack from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[1] @@ -76,6 +77,26 @@ def _run_profile_cli( return payload +def _stop_profile_runtime(profile: NativeCodexProfile) -> None: + # Stop only this disposable installed profile's runtime before removing + # files that its idle writer can still create. + payload = _run_profile_cli( + profile, + profile.root, + "--format", + "json", + "doctor", + "--installation-only", + "--restart-runtime", + ) + restart = payload.get("effect_runtime_restart") + if not isinstance(restart, dict) or restart.get("status") not in { + "stopped", + "not_running", + }: + raise SystemExit("profile runtime shutdown did not complete") + + def _profile_authority_contains_value(profile: NativeCodexProfile, value: str) -> bool: marker = value.encode("utf-8") for root in (profile.home, profile.codex_home): @@ -93,12 +114,16 @@ def _profile_authority_contains_value(profile: NativeCodexProfile, value: str) - def main() -> int: args = _parser().parse_args() - with tempfile.TemporaryDirectory(prefix="loopx-native-goal-profile-smoke-") as raw: + with ( + tempfile.TemporaryDirectory(prefix="loopx-native-goal-profile-smoke-") as raw, + ExitStack() as cleanup, + ): profile = install_native_codex_profile( REPO_ROOT, Path(raw) / "profile", require_clean_source=not args.allow_dirty_source, ) + cleanup.callback(_stop_profile_runtime, profile) profile_receipt = compact_native_codex_profile_receipt(profile) provider_key = "ARK_OPENAI_API_KEY" gateway_sentinel_key = "LOOPX_MODEL_PROVIDER_SENTINEL"