From 9da27b77aabe26b798337d25e1c3836d3e25a025 Mon Sep 17 00:00:00 2001 From: KiN3 <58543826+yehyakin@users.noreply.github.com> Date: Sat, 8 Aug 2026 19:23:02 +0800 Subject: [PATCH] release: prepare v0.4.1 host identity proof --- README.en.md | 9 +++++---- README.md | 9 +++++---- docs/release/runtime-surface-matrix.md | 24 +++++++++++++++--------- tests/test_contract.py | 10 +++++++++- tests/test_readme.py | 6 +++--- tests/test_rename_migration.py | 7 ++++++- 6 files changed, 43 insertions(+), 22 deletions(-) diff --git a/README.en.md b/README.en.md index d597202..ea6cd4f 100644 --- a/README.en.md +++ b/README.en.md @@ -345,16 +345,17 @@ See [`docs/release/runtime-surface-matrix.md`](docs/release/runtime-surface-matr ## Current status -The current release baseline is **v0.4.0**. +The current release baseline is **[v0.4.1](https://github.com/yehyakin/codex-sol-control/releases/tag/v0.4.1)**. | Verification surface | Recorded evidence | | --- | --- | -| Local repository | Skill Creator **PASS**; the v0.4.0 candidate records **113/113 tests PASS** | -| Hosted CI | [POSIX PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/30956811267): Ubuntu/macOS × Python 3.11/3.13; [Windows PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/30956811107): Windows Server 2022 / `windows-latest` × Windows PowerShell 5.1 / PowerShell 7 | +| Local repository | Skill Creator **PASS**; the v0.4.1 candidate records **113/113 tests PASS** | +| Hosted CI | [POSIX PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/31254093412): Ubuntu/macOS × Python 3.11/3.13; [Windows PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/31254093408): Windows Server 2022 / `windows-latest` × Windows PowerShell 5.1 / PowerShell 7 | | Physical Windows install | User-reported installation success; the Windows version, install log, and runtime identity payload were not captured, so this does not establish Native Nested | +| Desktop Sol handshake | v0.4.1 verifies the authoritative Host/tool role mapping + `fork_turns="none"` launch record + child permission/no-side-effect receipt; the same Sol completed final review with `PASS`; Desktop nested worker dispatch remains unproven | | Runtime surface | Native Nested verified on Codex CLI `0.146.0-alpha.9.2`: `gpt-5.6-sol/high/read-only` → `gpt-5.6-luna/max/read-only` → Sol `PASS`; Compatibility remains the fallback; physical Windows 11 remains unproven | -The rename, lifecycle, and identity-handshake implementation is [`848b210`](https://github.com/yehyakin/codex-sol-control/commit/848b210691fcfd91ec8b5374ba7b35c19c48e18e). See the [full implementation report](SOL_CONTROL_IMPLEMENTATION_REPORT.md) for the current evidence. +v0.4.1 fixes the Desktop handshake deadlock that occurred when a child agent could not observe its model or reasoning effort: exact identity now comes from the authoritative Host/tool role mapping and parent launch record, while the child reports only permissions, operational constraints, and zero side effects. The fix is [`05793db`](https://github.com/yehyakin/codex-sol-control/commit/05793dbbcace73230eeef51ff13eb3e4ca82b74e); see the [full implementation report](SOL_CONTROL_IMPLEMENTATION_REPORT.md) for the v0.4.0 architecture and migration background. These statements describe the recorded evidence boundary; they do not infer support for unverified runtime surfaces. diff --git a/README.md b/README.md index c70ce54..aa8e764 100644 --- a/README.md +++ b/README.md @@ -345,16 +345,17 @@ pwsh -NoProfile -File scripts/uninstall.ps1 -RestoreLatest ## 当前状态 -当前发布基线为 **v0.4.0**。 +当前发布基线为 **[v0.4.1](https://github.com/yehyakin/codex-sol-control/releases/tag/v0.4.1)**。 | 验证面 | 已记录证据 | | --- | --- | -| 本地仓库 | Skill Creator **PASS**;v0.4.0 候选版本 **113/113 tests PASS** | -| 托管 CI | [POSIX PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/30956811267):Ubuntu/macOS × Python 3.11/3.13;[Windows PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/30956811107):Windows Server 2022 / `windows-latest` × Windows PowerShell 5.1 / PowerShell 7 | +| 本地仓库 | Skill Creator **PASS**;v0.4.1 候选版本 **113/113 tests PASS** | +| 托管 CI | [POSIX PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/31254093412):Ubuntu/macOS × Python 3.11/3.13;[Windows PASS](https://github.com/yehyakin/codex-sol-control/actions/runs/31254093408):Windows Server 2022 / `windows-latest` × Windows PowerShell 5.1 / PowerShell 7 | | Windows 实机安装 | 用户报告安装成功;未收集 Windows 版本、安装日志或运行时身份载荷,因此不扩展为 Native Nested 证明 | +| Desktop Sol 握手 | v0.4.1 已验证 Host/tool 权威角色映射 + `fork_turns="none"` 启动记录 + child 权限/零副作用回执;同一个 Sol 完成最终审核并返回 `PASS`;Desktop 嵌套 worker 调度仍未证明 | | 运行表面 | Native Nested 已在 Codex CLI `0.146.0-alpha.9.2` 验证:`gpt-5.6-sol/high/read-only` → `gpt-5.6-luna/max/read-only` → Sol `PASS`;Compatibility 保留为回退;物理 Windows 11 尚未证明 | -更名、生命周期与身份握手实现提交为 [`848b210`](https://github.com/yehyakin/codex-sol-control/commit/848b210691fcfd91ec8b5374ba7b35c19c48e18e);当前详见[完整实施报告](SOL_CONTROL_IMPLEMENTATION_REPORT.md)。 +v0.4.1 修复了 Desktop 子 Agent 无法观察模型和 reasoning effort 时的握手死锁:精确身份由 Host/tool 权威角色映射与父线程启动记录证明,child 只回报权限边界、运行约束和零副作用。修复提交为 [`05793db`](https://github.com/yehyakin/codex-sol-control/commit/05793dbbcace73230eeef51ff13eb3e4ca82b74e);v0.4.0 的架构与迁移背景见[完整实施报告](SOL_CONTROL_IMPLEMENTATION_REPORT.md)。 这些状态描述的是已记录证据范围,不推断未验证运行表面。 diff --git a/docs/release/runtime-surface-matrix.md b/docs/release/runtime-surface-matrix.md index bf64982..b1fda31 100644 --- a/docs/release/runtime-surface-matrix.md +++ b/docs/release/runtime-surface-matrix.md @@ -4,16 +4,16 @@ Release-time documentation for Sol Control. This matrix is not a per-task checklist and does not turn configuration text into runtime proof. Statuses are limited to `VERIFIED`, `FAILED`, and `UNVERIFIED`. -Date: 2026-08-05 +Date: 2026-08-08 | Surface | Signal | Status | Evidence location | Date | | --- | --- | --- | --- | --- | -| Desktop | Agent selection | UNVERIFIED | No runtime identity payload captured in this release | 2026-08-03 | -| Desktop | exact model | UNVERIFIED | Configuration names are not runtime proof | 2026-08-03 | -| Desktop | reasoning | UNVERIFIED | No runtime reasoning-effort payload captured | 2026-08-03 | -| Desktop | nested dispatch | UNVERIFIED | Nested launch capability was not independently proved | 2026-08-03 | -| Desktop | result retrieval | UNVERIFIED | No checkable runtime artifact or path was captured for the observed handoff | 2026-08-03 | -| Desktop | candidate binding | UNVERIFIED | Contract rule exists; no runtime candidate snapshot was captured | 2026-08-03 | +| Desktop | Agent selection | VERIFIED | Host launch record selected `sol-controller` with `fork_turns="none"`; child session metadata recorded the same role | 2026-08-08 | +| Desktop | exact model | VERIFIED | Authoritative Host/tool mapping fixed `sol-controller` to `gpt-5.6-sol` | 2026-08-08 | +| Desktop | reasoning | VERIFIED | Authoritative Host/tool mapping fixed Sol reasoning effort to `high` | 2026-08-08 | +| Desktop | nested dispatch | UNVERIFIED | This acceptance run launched and reviewed with Sol but did not launch a Desktop worker | 2026-08-08 | +| Desktop | result retrieval | VERIFIED | The same Sol returned handshake `PASS` and final review `PASS` | 2026-08-08 | +| Desktop | candidate binding | VERIFIED | Sol reviewed the six-path final diff bound to SHA-256 `bb6c52df3293585112160790df6109a726309ce4f62fe1ee5ba269403ac2abe9` | 2026-08-08 | | CLI | Agent selection | UNVERIFIED | No CLI runtime identity payload captured in this release | 2026-08-03 | | CLI | exact model | UNVERIFIED | Configuration names are not runtime proof | 2026-08-03 | | CLI | reasoning | UNVERIFIED | No CLI reasoning-effort payload captured | 2026-08-03 | @@ -27,8 +27,14 @@ Date: 2026-08-05 | codex exec | result retrieval | VERIFIED | Luna structured `PASS`; Sol final `PASS` | 2026-08-05 | | codex exec | candidate binding | UNVERIFIED | Read-only arithmetic acceptance had no changed-file candidate | 2026-08-05 | +The v0.4.1 Desktop proof deliberately does not ask the child to self-report +model or reasoning metadata that its runtime surface cannot observe. Exact +selection comes from the authoritative Host/tool role mapping plus the parent +launch record; the child handshake proves permissions, operational constraints, +and zero side effects. Desktop worker nesting remains `UNVERIFIED`. + The renamed `$sol-control` fresh-session and Native Nested checks were captured after the v0.4 global installation. The persistent `codex exec` runtime records prove the Sol-to-Luna path, exact child models and efforts, inherited read-only -boundary, structured Luna result, and Sol review. Candidate binding remains -`UNVERIFIED` because this acceptance case intentionally changed no file. +boundary, structured Luna result, and Sol review. Its candidate binding remains +`UNVERIFIED` because that acceptance case intentionally changed no file. diff --git a/tests/test_contract.py b/tests/test_contract.py index 966b24f..952e60b 100644 --- a/tests/test_contract.py +++ b/tests/test_contract.py @@ -363,7 +363,7 @@ def test_v041_explicit_user_steering_stops_old_plan_and_replans(self) -> None: r"(?is)(?:requires|must).{0,100}re-?plan.{0,180}(?:new|updated).{0,100}(?:request|goal)", ) - def test_v040_runtime_surface_matrix_is_release_time_only(self) -> None: + def test_v041_runtime_surface_matrix_is_release_time_only(self) -> None: path = ROOT / "docs" / "release" / "runtime-surface-matrix.md" self.assertTrue(path.is_file(), path) text = path.read_text(encoding="utf-8") @@ -381,6 +381,14 @@ def test_v040_runtime_surface_matrix_is_release_time_only(self) -> None: for status in ("VERIFIED", "FAILED", "UNVERIFIED"): self.assertIn(status, text, status) self.assertRegex(text, r"(?i)release[- ]time|release documentation|per-task") + self.assertIn("| Desktop | Agent selection | VERIFIED |", text) + self.assertIn("| Desktop | exact model | VERIFIED |", text) + self.assertIn("| Desktop | reasoning | VERIFIED |", text) + self.assertIn("| Desktop | nested dispatch | UNVERIFIED |", text) + self.assertRegex( + text, + r"(?is)does not ask the child to self-report.{0,180}Host/tool role mapping.{0,180}launch record", + ) def test_runtime_notes_preserve_host_safety_checkpoints_and_environment_hygiene(self) -> None: text = self.contract_text() diff --git a/tests/test_readme.py b/tests/test_readme.py index df41904..0af3ee9 100644 --- a/tests/test_readme.py +++ b/tests/test_readme.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Contract tests for the v0.4.0 bilingual documentation surface.""" +"""Contract tests for the v0.4.x bilingual documentation surface.""" from __future__ import annotations @@ -799,7 +799,7 @@ def test_bilingual_core_signals_have_parity(self) -> None: "saving = 1 - route_cost", "config.toml", "RestoreLatest", - "v0.4.0", + "v0.4.1", "tests PASS", "Compatibility", "Native Nested", @@ -888,7 +888,7 @@ def test_bilingual_core_signals_have_parity(self) -> None: ) release_block = rendered[release_heading.start() : release_end] for signal in ( - "v0.4.0", + "v0.4.1", "tests PASS", "(SOL_CONTROL_IMPLEMENTATION_REPORT.md)", ): diff --git a/tests/test_rename_migration.py b/tests/test_rename_migration.py index a45fad3..5b23687 100644 --- a/tests/test_rename_migration.py +++ b/tests/test_rename_migration.py @@ -59,7 +59,12 @@ def test_public_readmes_publish_the_new_identity_and_version(self) -> None: for relative in ("README.md", "README.en.md"): text = read(ROOT / relative) self.assertIn(CANONICAL_REPOSITORY, text, relative) - self.assertIn("v0.4.0", text, relative) + self.assertRegex( + text, + r"(?i)current release baseline.*v0\.4\.1|当前发布基线.*v0\.4\.1", + relative, + ) + self.assertIn("05793db", text, relative) self.assertIn("$sol-control", text, relative) self.assertNotIn("https://github.com/yehyakin/codex-sol-luna", text, relative)