From 6f660d86694669018883afec9488f2bd03874c08 Mon Sep 17 00:00:00 2001 From: Endofthestars <85158737+Endofthestars@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:55:12 +0800 Subject: [PATCH] chore(m17): prepare 0.3.0rc1 release --- CHANGELOG.md | 25 ++++++++ README.md | 5 +- README.zh-CN.md | 4 +- docs/en/README.md | 2 + docs/en/migrations/0.3.0rc1.md | 50 ++++++++++++++++ docs/en/plugins/benchwork.md | 2 +- docs/en/releases/0.3.0rc1.md | 65 +++++++++++++++++++++ plugins/benchwork/.codex-plugin/plugin.json | 2 +- plugins/benchwork/benchwork-plugin-api.json | 4 +- pyproject.toml | 2 +- src/benchwork/__init__.py | 2 +- tests/plugin/test_plugin_package.py | 2 +- tests/test_distribution.py | 2 +- 13 files changed, 155 insertions(+), 12 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 docs/en/migrations/0.3.0rc1.md create mode 100644 docs/en/releases/0.3.0rc1.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..be37cb2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +All notable changes are recorded here. Benchwork remains a prerelease and uses +versioned schemas plus explicit migration notes for compatibility. + +## 0.3.0rc1 — The Instrumentarium Seal + +- Froze the Phase 2 host-native Plugin and MCP architecture. +- Packaged seven Codex Skills, trusted guardrail hooks, and the STDIO MCP + connection. +- Published and registered 38 typed scientific-control-plane tools. +- Added immutable preview/commit scientific Seals and Host Session provenance. +- Added Review Request and Review Artifact provenance with an explicit + external disclosure gate. +- Formalized Kernel, CLI, and IDE Host acceptance tiers and accepted + environment/authorization exception states. +- Added the deterministic Phase 2 golden `REPAIR` scenario. + +See [release notes](docs/en/releases/0.3.0rc1.md) and +[migration guide](docs/en/migrations/0.3.0rc1.md). + +## 0.2.0rc1 — The Seal + +- Completed the Phase 1 deterministic Kernel, Chronicle, Ward, Athanor, + Capability, replay, integrity, and release acceptance baseline. diff --git a/README.md b/README.md index 3600a0f..9137b22 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,9 @@ tools may propose work, but only the deterministic Athanor kernel can accept a canonical transition. Accepted events are written to a local, append-only Chronicle with chained SHA-256 Sigils and receipts. -> Project status: `0.3.0a1` prerelease. Phase 2 adds the Codex Plugin-first -> Instrumentarium while preserving host-neutral scientific contracts. +> Project status: `0.3.0rc1` release candidate. Phase 2 freezes the Codex +> Plugin-first Instrumentarium while preserving host-neutral scientific +> contracts. ## Why Benchwork diff --git a/README.zh-CN.md b/README.zh-CN.md index 454ff6c..e00a56d 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -8,8 +8,8 @@ Benchwork 将科研活动转化为明确、可审查的状态。智能体和工 提案,但只有确定性的 Athanor 内核能够接受规范状态迁移。获准事件写入本地 追加式 Chronicle,并通过链式 SHA-256 Sigil 与 Receipt 留下记录。 -> 项目状态:`0.2.0rc1` 公开候选版本。M10 第一阶段验收已实现;稳定命名仍为 -> provisional。 +> 项目状态:`0.3.0rc1` 候选版本。Phase 2 已冻结 Codex Plugin-first +> Instrumentarium,同时保留宿主中立的科研契约;稳定命名仍为 provisional。 ## 为什么需要 Benchwork diff --git a/docs/en/README.md b/docs/en/README.md index 92c3070..13c0ea6 100644 --- a/docs/en/README.md +++ b/docs/en/README.md @@ -54,6 +54,8 @@ English is the canonical source for all Benchwork documentation. - [Phase 2 acceptance matrix](PHASE2_ACCEPTANCE.md) - [Benchwork Codex plugin](plugins/benchwork.md) - [Acceptance Exception Policy](plugins/acceptance-exception-policy.md) +- [0.3.0rc1 migration guide](migrations/0.3.0rc1.md) +- [0.3.0rc1 release notes](releases/0.3.0rc1.md) - [0.2.0rc1 release notes](releases/0.2.0rc1.md) Architecture notes describe implemented boundaries unless a page explicitly diff --git a/docs/en/migrations/0.3.0rc1.md b/docs/en/migrations/0.3.0rc1.md new file mode 100644 index 0000000..bd0c03f --- /dev/null +++ b/docs/en/migrations/0.3.0rc1.md @@ -0,0 +1,50 @@ +--- +language: en +canonical: true +--- + +# Migrating to 0.3.0rc1 + +This guide covers `0.3.0a1` to `0.3.0rc1`. + +## Canonical state + +No Chronicle migration is required. M17 freezes existing Phase 2 behavior and +does not rewrite `.benchwork/`. Always run Deep Doctor before and after an +application upgrade when canonical project state exists. + +## Python runtime + +Upgrade or reinstall the package, then verify: + +```bash +python3 -c "import benchwork; print(benchwork.__version__)" +bwork doctor --deep +bwork mcp --help +``` + +The Python/PEP 440 version is `0.3.0rc1`. + +## Codex plugin + +The plugin/SemVer version is `0.3.0-rc.1`. Reinstall it from the same trusted +local marketplace and start a new conversation so Codex loads the updated +Skills, MCP metadata, and hooks. Review hook trust again if the Host asks. + +Do not edit a marketplace file by hand during local iteration. Plugin +installation, upgrade, rollback, and removal must leave `.benchwork/` +unchanged. + +## Contract changes + +- The existing 38 MCP tool names are unchanged and are now frozen in + `mcp-tool-registry/1.0`. +- Each Skill retains its existing `SKILL.md` discovery contract and gains + versioned Benchwork `skill.yaml` metadata. +- `benchwork-plugin-api/1.0` records runtime and registry compatibility outside + the Codex-native manifest. +- Host and Review acceptance exceptions are now normative documented states. + +No client should add or depend on universal `execute`, shell, file, Git, web, +or schema meta-tools. Standard MCP `tools/list` remains the discovery +mechanism. diff --git a/docs/en/plugins/benchwork.md b/docs/en/plugins/benchwork.md index 4ccf7f2..1a8e496 100644 --- a/docs/en/plugins/benchwork.md +++ b/docs/en/plugins/benchwork.md @@ -1,6 +1,6 @@ # Benchwork Codex plugin -Benchwork 0.3.0a1 is designed for an interactive Codex session. Install the +Benchwork 0.3.0rc1 is designed for an interactive Codex session. Install the Python package first, then install the repository marketplace and enable the `benchwork` plugin. diff --git a/docs/en/releases/0.3.0rc1.md b/docs/en/releases/0.3.0rc1.md new file mode 100644 index 0000000..fc937b6 --- /dev/null +++ b/docs/en/releases/0.3.0rc1.md @@ -0,0 +1,65 @@ +--- +language: en +canonical: true +--- + +# Benchwork 0.3.0rc1 + +`0.3.0rc1` is M17 “The Instrumentarium Seal,” the Phase 2 release candidate. +It freezes the Agent-native research control plane before Phase 3 adds +execution-environment capabilities. + +## Frozen contracts + +- 38 typed MCP tools in `mcp-tool-registry/1.0` +- `mcp-tool-result/1.0` response envelopes +- seven versioned Benchwork Skills +- Codex plugin and STDIO MCP packaging +- Host Session provenance +- immutable RQ, Protocol, and Decision preview/commit Seals +- Review Request/Artifact provenance and disclosure authorization +- tiered Host acceptance and exception policy + +All Phase 2 Plugin and MCP contracts remain Alpha. A breaking change requires +an accepted RFC, migration guidance, and contract/replay coverage. + +## Acceptance + +| Boundary | Result | +| --- | --- | +| Kernel | PASS | +| MCP | PASS | +| Codex Plugin | PASS | +| Codex CLI | PASS | +| Codex IDE | `BLOCKED_BY_ENVIRONMENT` (`HOST-IDE-001`, accepted) | +| External Review | `WAITING_FOR_DISCLOSURE_AUTHORIZATION` | +| Claude Code CLI | `PENDING_HOST_VALIDATION` | + +The IDE and external Review states do not weaken Kernel, MCP, Plugin, or Codex +CLI acceptance. Claude Code uses the host-neutral contract but does not have a +claimed interactive PASS in this release. + +## Golden path + +The [`phase2-final`](../../../examples/phase2-final/README.md) scenario runs: + +```text +Host workflow + -> audit Task + -> Athanor Receipt + -> repaired Protocol preview/commit + -> implementation and registered Runs + -> Alembic + -> Assessment + -> REPAIR Decision preview/commit + -> Chronicle replay and Deep Doctor +``` + +Failed and excluded Runs remain canonical. No background Codex process or +external Review disclosure is required. + +## Scope boundary + +This release does not add HTTP MCP transport, remote execution, OAuth, +filesystem isolation, GPU scheduling, remote jobs, Artifact storage, or +automatic external review. Those belong to Phase 3 and require new RFCs. diff --git a/plugins/benchwork/.codex-plugin/plugin.json b/plugins/benchwork/.codex-plugin/plugin.json index 4965896..581f818 100644 --- a/plugins/benchwork/.codex-plugin/plugin.json +++ b/plugins/benchwork/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "benchwork", - "version": "0.3.0-alpha.1", + "version": "0.3.0-rc.1", "description": "Auditable research workflows and scientific control-plane tools for Codex", "author": { "name": "Endofthestars", diff --git a/plugins/benchwork/benchwork-plugin-api.json b/plugins/benchwork/benchwork-plugin-api.json index e136413..599f403 100644 --- a/plugins/benchwork/benchwork-plugin-api.json +++ b/plugins/benchwork/benchwork-plugin-api.json @@ -1,9 +1,9 @@ { "schema_version": "benchwork-plugin-api/1.0", "plugin": "benchwork", - "plugin_version": "0.3.0-alpha.1", + "plugin_version": "0.3.0-rc.1", "benchwork_api": "0.3", - "minimum_runtime": "0.3.0a1", + "minimum_runtime": "0.3.0rc1", "skills_api": "1", "mcp_tool_registry": "mcp-tool-registry/1.0", "mcp_tool_count": 38 diff --git a/pyproject.toml b/pyproject.toml index c4e5e99..146d9fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "benchwork-arcana" -version = "0.3.0a1" +version = "0.3.0rc1" description = "An auditable workbench for agent-assisted computational research." readme = "README.md" requires-python = ">=3.11" diff --git a/src/benchwork/__init__.py b/src/benchwork/__init__.py index 55b037c..5d573e4 100644 --- a/src/benchwork/__init__.py +++ b/src/benchwork/__init__.py @@ -1,3 +1,3 @@ """Benchwork's deterministic Athanor foundation.""" -__version__ = "0.3.0a1" +__version__ = "0.3.0rc1" diff --git a/tests/plugin/test_plugin_package.py b/tests/plugin/test_plugin_package.py index 3578e9d..ef686fd 100644 --- a/tests/plugin/test_plugin_package.py +++ b/tests/plugin/test_plugin_package.py @@ -23,7 +23,7 @@ def test_manifest_marketplace_and_components_agree(self) -> None: entry = next(item for item in marketplace["plugins"] if item["name"] == "benchwork") self.assertEqual(marketplace["name"], "benchwork-local") self.assertEqual(manifest["name"], "benchwork") - self.assertEqual(manifest["version"], "0.3.0-alpha.1") + self.assertEqual(manifest["version"], "0.3.0-rc.1") self.assertEqual(entry["source"]["path"], "./plugins/benchwork") self.assertEqual(entry["policy"]["installation"], "AVAILABLE") self.assertEqual(entry["policy"]["authentication"], "ON_INSTALL") diff --git a/tests/test_distribution.py b/tests/test_distribution.py index bb61b7f..6b1c4d0 100644 --- a/tests/test_distribution.py +++ b/tests/test_distribution.py @@ -11,7 +11,7 @@ class DistributionTest(unittest.TestCase): def test_package_and_project_versions_match(self) -> None: project = loads((Path(__file__).parents[1] / "pyproject.toml").read_text(encoding="utf-8")) self.assertEqual(benchwork.__version__, project["project"]["version"]) - self.assertEqual(benchwork.__version__, "0.3.0a1") + self.assertEqual(benchwork.__version__, "0.3.0rc1") def test_init_creates_both_versioned_registries(self) -> None: with tempfile.TemporaryDirectory() as directory: