From d45024ea48703af61a2d31d6d0a5784f708384af Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 20 Aug 2026 19:20:27 +0000 Subject: [PATCH] =?UTF-8?q?feat(=E4=BA=A4=E4=BB=98=E7=89=A9=E7=90=86):=20?= =?UTF-8?q?=E5=87=86=E5=A4=87=200.7.8=20=E5=8F=91=E5=87=BA=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E7=BA=BF=E5=AE=B6=E6=97=8F=E4=B8=8E=20Console=20P1?= =?UTF-8?q?=E2=80=93P3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 把已上线的 hide-board、line-family、spawn/merge/sync 与 Console P1–P3 收进可发布的补丁号,版本停在 0.7.x。 Co-authored-by: Dandre Yang --- CHANGELOG.md | 5 +++-- docs/adr/0006-delivery-physics-and-capability-plane.md | 2 +- docs/architecture.md | 2 +- pyproject.toml | 2 +- src/dyro/bridge/skill/SKILL.md | 2 +- tests/test_cli.py | 4 ++-- tests/test_console_artifacts.py | 4 ++-- tests/test_release_gates.py | 2 +- uv.lock | 4 ++-- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef2531b..e311d39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 0.7.8 - 2026-08-20 + - Tighten the internal `dyro-board` Record protocol: declare a production-line baseline (not `master`/`main`), close prior P0/P1 as `已闭环` / `未闭环` / `须人工核` (or `已检索·无先前会审` when none), @@ -10,7 +12,6 @@ record the full test command plus whether a pipeline/redirect hid the exit code. Pins lock those polarities. The `/dyro-review-board` wrapper still follows that file only and refuses same-turn delivery. - Version unchanged. - Hide the internal `dyro-board` protocol from slash / `$` skill pickers. `/dyro-review-board` is the only human-facing 会审 command. The protocol asset still installs as a non-invocable companion of `review-board` (and @@ -51,7 +52,7 @@ cannot write artifacts. Planted path, URL, or credential titles are blanked on read; artifact ids reject a `..` substring. Unpaired channel logs are no longer hidden as unread 0; `msg_N` page keys - stay `(family, id)`. Version stays `0.7.7`. + stay `(family, id)`. - User slash Skill `dyro-line-family` (`/dyro-line-family`) preflights `line spawn` / `line merge` / `line sync` and prints one `--yes` command for the human. It does not execute the mutation, invent `--push`, or diff --git a/docs/adr/0006-delivery-physics-and-capability-plane.md b/docs/adr/0006-delivery-physics-and-capability-plane.md index 225117d..4ffb312 100644 --- a/docs/adr/0006-delivery-physics-and-capability-plane.md +++ b/docs/adr/0006-delivery-physics-and-capability-plane.md @@ -64,7 +64,7 @@ - 产品叙事从「启动 agent」转为「核验完成」。 - `0.7.0` 落地 Proof、Capability Card、Host Compiler 与 `verify-bundle`。`trusted_usage` 默认 `false`;生产 `BudgetUsage` / `BudgetRequest` 从 Card 读取该字段。`objective tick` 对 automatic Objective 做预算预览(`automatic=True`),受监督 apply 仍 `automatic=False`。未信任用量只在存在 `workspace.max_provider_usage` 时硬停。Proof 仍不接入 `no_progress`。Console summary 保持 `proof_inspection=not_inspected`,不探 Git / Proof;`dyro objective attention` 走完整快照,可报 `PROOF_DECAYED`。两套入口不得写成同一套 Proof 展示。 -- Console 独立 inspect、`trigger_observation`、陌生人核验与叙事锁已在 `0.7.1` 落地。`0.7.2` 收口换工具 briefing 与 Console「现在需要你」。`0.7.3` 把空关注收回未读,并去掉首页与 `next` repair 的路径泄漏。`0.7.4` 发出第一方 Skill 首批座位:控制面、执行、评审板与 Dispatch;按情景自动戴上,戴上不是突变授权;不扫描用户 skill 目录。`0.7.5` 增加可选 `local-image-gen` sidecar 发现:`dyro doctor` 只看 PATH,`dyro image` 不进编码工具目录或座位。`0.7.6` 发出第一方斜杠 Skill:`dyro-review-board`(会审 / 对抗审查)与 `dyro-task-merge`(任务合入开发线预检);经 `dyro integration` 安装,不自动触发,加载不等于 merge、push 或发布。`0.7.7` 发出开发线远程就绪:绑定 `origin/`,`doctor` 拒绝错误上游,`join` 只忽略 missing-origin。后续功能与产品面收口继续开发和上线,版本号保持 `0.7.x`。 +- Console 独立 inspect、`trigger_observation`、陌生人核验与叙事锁已在 `0.7.1` 落地。`0.7.2` 收口换工具 briefing 与 Console「现在需要你」。`0.7.3` 把空关注收回未读,并去掉首页与 `next` repair 的路径泄漏。`0.7.4` 发出第一方 Skill 首批座位:控制面、执行、评审板与 Dispatch;按情景自动戴上,戴上不是突变授权;不扫描用户 skill 目录。`0.7.5` 增加可选 `local-image-gen` sidecar 发现:`dyro doctor` 只看 PATH,`dyro image` 不进编码工具目录或座位。`0.7.6` 发出第一方斜杠 Skill:`dyro-review-board`(会审 / 对抗审查)与 `dyro-task-merge`(任务合入开发线预检);经 `dyro integration` 安装,不自动触发,加载不等于 merge、push 或发布。`0.7.7` 发出开发线远程就绪:绑定 `origin/`,`doctor` 拒绝错误上游,`join` 只忽略 missing-origin。`0.7.8` 发出开发线家族(`parent` schema 3、spawn/merge/sync、`/dyro-line-family`)、隐藏 `dyro-board` 斜杠,以及 Console P1–P3(直播事件与一层家族图、家族频道与人类模块、产物栏)。后续功能与产品面收口继续开发和上线,版本号保持 `0.7.x`。 - 可携带核验的对外承诺仍是:陌生人拿着 Proof Bundle 和自己提供的 git 对象,能得到与源机**相同的完整性结论**(字节仍在、钉死 SHA 可解析)。这不是身份证明,也不是「现在工作区还能 merge」。`schema_version = 1` 的合同在 `0.7.x` 锁住语义;冻结成 `1.0.0` 身份号须另做产品决定。 - 实施成本是新的投影层与兼容层,而不是第二套调度器。 diff --git a/docs/architecture.md b/docs/architecture.md index 4af0d6b..fa05d71 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -242,6 +242,6 @@ Dyro 的交付拓扑与之**实质相近**:TaskGraph(`depends_on` / conflict 未来的 adapter、通知、签名规则、发布平台与审批系统应使用 Python entry point 或独立 Profile 扩展包接入;不要把某个组织的策略加入 core 默认行为。 -`0.7.0` 把已有证据物理学抽成可复验的 Proof,并把 argv adapter 升级为 Capability Card,再把定律编译为只收缩权威的宿主投影。衰减与现有 merge / 下游检查同真值;`proof verify` 看当前工作区,`verify-bundle` 只核完整性,两套结论不得混称。Console summary 与 `dyro objective attention` 不是同一套 Proof 展示。Console 独立 inspect、`trigger_observation` 与可携带核验门禁已在 `0.7.1` 落地。`0.7.2` 把换工具后的开场白收成事项加一条只读下一步,不另开会话层。`0.7.3` 把 Console 空关注收回未读,并不再在首页和下一条修复命令里漏本地路径。`0.7.4` 发出第一方 Skill 首批座位:控制面、执行、评审板与 Dispatch;按情景自动戴上,戴上不等于同意突变;不扫描用户 skill 目录。`0.7.5` 增加可选 `local-image-gen` sidecar 发现:`dyro doctor` 只看 PATH,`dyro image` 不进编码工具目录或座位。`0.7.6` 发出第一方斜杠 Skill:`dyro-review-board`(会审 / 对抗审查)与 `dyro-task-merge`(任务合入开发线预检);经 `dyro integration` 安装,不自动触发,加载不等于 merge、push 或发布。`0.7.7` 发出开发线远程就绪:绑定 `origin/`,`doctor` 拒绝错误上游,`join` 只忽略 missing-origin。后续功能继续在 `0.7.x` 开发和上线,不另开 `0.8.0` / `0.9.0` / `1.0.0` 功能号。可携带核验是 Proof Bundle 加调用方提供的 git 对象,核验完整性而不是身份,也不承诺与当前 merge 同一套 `live`。这不另造 TaskGraph 或完成状态机;见 [`交付物理学`](designs/delivery-physics.md) 与 [`ADR-0006`](adr/0006-delivery-physics-and-capability-plane.md)。 +`0.7.0` 把已有证据物理学抽成可复验的 Proof,并把 argv adapter 升级为 Capability Card,再把定律编译为只收缩权威的宿主投影。衰减与现有 merge / 下游检查同真值;`proof verify` 看当前工作区,`verify-bundle` 只核完整性,两套结论不得混称。Console summary 与 `dyro objective attention` 不是同一套 Proof 展示。Console 独立 inspect、`trigger_observation` 与可携带核验门禁已在 `0.7.1` 落地。`0.7.2` 把换工具后的开场白收成事项加一条只读下一步,不另开会话层。`0.7.3` 把 Console 空关注收回未读,并不再在首页和下一条修复命令里漏本地路径。`0.7.4` 发出第一方 Skill 首批座位:控制面、执行、评审板与 Dispatch;按情景自动戴上,戴上不等于同意突变;不扫描用户 skill 目录。`0.7.5` 增加可选 `local-image-gen` sidecar 发现:`dyro doctor` 只看 PATH,`dyro image` 不进编码工具目录或座位。`0.7.6` 发出第一方斜杠 Skill:`dyro-review-board`(会审 / 对抗审查)与 `dyro-task-merge`(任务合入开发线预检);经 `dyro integration` 安装,不自动触发,加载不等于 merge、push 或发布。`0.7.7` 发出开发线远程就绪:绑定 `origin/`,`doctor` 拒绝错误上游,`join` 只忽略 missing-origin。`0.7.8` 发出开发线家族(`parent` schema 3、spawn/merge/sync、`/dyro-line-family`)、隐藏 `dyro-board` 斜杠,以及 Console P1–P3(直播事件与一层家族图、家族频道与人类模块、产物栏)。后续功能继续在 `0.7.x` 开发和上线,不另开 `0.8.0` / `0.9.0` / `1.0.0` 功能号。可携带核验是 Proof Bundle 加调用方提供的 git 对象,核验完整性而不是身份,也不承诺与当前 merge 同一套 `live`。这不另造 TaskGraph 或完成状态机;见 [`交付物理学`](designs/delivery-physics.md) 与 [`ADR-0006`](adr/0006-delivery-physics-and-capability-plane.md)。 开发者侧的可选本地多 Agent 派发(五段式任务契约、注入前机密守卫、locator 核验、隔离 patch)与上述控制面分层并列,随 `dyro` 安装包分发(`dyro dispatch` / `import experiments.local_agent_dispatch`),但**不**替代 gates/合并。同时写多块走 Core Peer Wave(task worktree + `conflict_group`),见 [`peer-wave-execution.md`](designs/peer-wave-execution.md)、[`ADR-0002`](adr/0002-optional-local-agent-dispatch.md)、[`多智能体编排纪律`](agent-orchestration-discipline.md) 与 [`可选本地 Agent 派发设计`](designs/optional-local-agent-dispatch.md)。 diff --git a/pyproject.toml b/pyproject.toml index 8bf6406..7c1a854 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "dyro" -version = "0.7.7" +version = "0.7.8" description = "DyroEngineeringFlow: local-first automation and delivery control for multi-repository teams" readme = "README.md" requires-python = ">=3.11" diff --git a/src/dyro/bridge/skill/SKILL.md b/src/dyro/bridge/skill/SKILL.md index ad26d78..81c4ead 100644 --- a/src/dyro/bridge/skill/SKILL.md +++ b/src/dyro/bridge/skill/SKILL.md @@ -50,7 +50,7 @@ release, publish, console, install, or any confirmation/approval field. ```json { "protocol": {"major": 1, "minor": 0}, - "client": {"name": "dyro-agent-bridge-skill", "version": "0.7.7"}, + "client": {"name": "dyro-agent-bridge-skill", "version": "0.7.8"}, "operation": "bridge.capabilities.compact", "input": {} } diff --git a/tests/test_cli.py b/tests/test_cli.py index 4e616c8..1e937aa 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -2127,6 +2127,6 @@ def test_package_version_matches_pyproject(self) -> None: from dyro import __version__ metadata = tomllib.loads(Path("pyproject.toml").read_text(encoding="utf-8")) - self.assertEqual(metadata["project"]["version"], "0.7.7") - self.assertEqual(__version__, "0.7.7") + self.assertEqual(metadata["project"]["version"], "0.7.8") + self.assertEqual(__version__, "0.7.8") self.assertEqual(__version__, metadata["project"]["version"]) diff --git a/tests/test_console_artifacts.py b/tests/test_console_artifacts.py index 5662398..c8eef0d 100644 --- a/tests/test_console_artifacts.py +++ b/tests/test_console_artifacts.py @@ -225,12 +225,12 @@ def test_page_and_manifest_keep_p3_fail_closed_pins(self) -> None: self.assertNotEqual(refresh_at, -1) self.assertNotIn(b"/artifacts", script.body[refresh_at:next_fn]) - def test_version_stays_0_7_7(self) -> None: + def test_package_version_is_0_7_8(self) -> None: import tomllib from pathlib import Path metadata = tomllib.loads(Path("pyproject.toml").read_text(encoding="utf-8")) - self.assertEqual(metadata["project"]["version"], "0.7.7") + self.assertEqual(metadata["project"]["version"], "0.7.8") class ConsoleArtifactServiceTests(WorkspaceCase): diff --git a/tests/test_release_gates.py b/tests/test_release_gates.py index bd0ef55..d6e4379 100644 --- a/tests/test_release_gates.py +++ b/tests/test_release_gates.py @@ -32,7 +32,7 @@ def test_physics_train_refuses_published_0_6_9_tag(self) -> None: def test_0_7_release_runs_gates_without_claiming_1_0(self) -> None: stdout = StringIO() with redirect_stdout(stdout): - code = main(["--root", str(ROOT), "--release-tag", "v0.7.7"]) + code = main(["--root", str(ROOT), "--release-tag", "v0.7.8"]) self.assertEqual(code, 0) self.assertIn("0.7 gates present", stdout.getvalue()) self.assertNotIn("1.0 gates present", stdout.getvalue()) diff --git a/uv.lock b/uv.lock index 7687cd7..bab7633 100644 --- a/uv.lock +++ b/uv.lock @@ -286,7 +286,7 @@ wheels = [ [[package]] name = "dyro" -version = "0.7.7" +version = "0.7.8" source = { editable = "." } dependencies = [ { name = "cryptography" }, @@ -336,7 +336,7 @@ name = "importlib-metadata" version = "9.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp", marker = "python_full_version < '3.14'" }, + { name = "zipp" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size = 56405, upload-time = "2026-03-20T06:42:56.999Z" } wheels = [