From d1a64c4591a2675a1637ff723ee61d2f31a8bc73 Mon Sep 17 00:00:00 2001 From: Moon-Young Date: Wed, 22 Jul 2026 12:19:51 +0000 Subject: [PATCH 1/2] fix: preserve blocked lane diagnostics in verdicts Propagate the runtime-recorded blocked reason into blocked lane results without changing fan-in decisions or passing-lane output bytes. Co-Authored-By: Claude Opus 4.8 (1M context) --- depone/agent_fabric/team_ledger.py | 5 ++++- docs/team-dry-run/team-ledger-verdict.json | 2 ++ tests/test_agent_fabric_team_ledger.py | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/depone/agent_fabric/team_ledger.py b/depone/agent_fabric/team_ledger.py index 4f928218..f3f59288 100644 --- a/depone/agent_fabric/team_ledger.py +++ b/depone/agent_fabric/team_ledger.py @@ -555,7 +555,7 @@ def _validate_lane( } ) - return { + lane_result = { "lane_id": lane_error_id, "env_kind": lane.get("env_kind"), "runner_adapter_kind": lane.get("runner_adapter_kind"), @@ -576,6 +576,9 @@ def _validate_lane( "touched_file_count": len(touched_files), "errors": errors, } + if state == "blocked": + lane_result["blocked_reason"] = blocked_reason + return lane_result def _require_non_empty_string( diff --git a/docs/team-dry-run/team-ledger-verdict.json b/docs/team-dry-run/team-ledger-verdict.json index 0b88daa6..41b75d8e 100644 --- a/docs/team-dry-run/team-ledger-verdict.json +++ b/docs/team-dry-run/team-ledger-verdict.json @@ -14,6 +14,7 @@ "lane_count": 2, "lane_results": [ { + "blocked_reason": "dry-run plan only; no lane evidence has been captured and no worker was launched", "decision": "blocked", "env_kind": "local", "errors": [], @@ -59,6 +60,7 @@ } }, { + "blocked_reason": "dry-run plan only; no lane evidence has been captured and no worker was launched", "decision": "blocked", "env_kind": "local", "errors": [], diff --git a/tests/test_agent_fabric_team_ledger.py b/tests/test_agent_fabric_team_ledger.py index ad6a76df..b38c5ac0 100644 --- a/tests/test_agent_fabric_team_ledger.py +++ b/tests/test_agent_fabric_team_ledger.py @@ -427,6 +427,7 @@ def test_valid_ledger_passes(self) -> None: self.assertEqual(verdict["kind"], "depone-team-ledger-verdict") self.assertEqual(verdict["decision"], "pass") self.assertEqual(verdict["passed_lane_count"], 1) + self.assertNotIn("blocked_reason", verdict["lane_results"][0]) self.assertFalse(verdict["boundary"]["executes_commands"]) self.assertFalse(verdict["boundary"]["raises_assurance"]) @@ -610,6 +611,10 @@ def test_blocked_lane_with_reason_fans_in_as_explicit_block(self) -> None: self.assertEqual(verdict["decision"], "blocked-explicit") self.assertEqual(verdict["blocked_lane_count"], 1) + self.assertEqual( + verdict["lane_results"][0]["blocked_reason"], + "lane hit a merge conflict", + ) self.assertEqual(verdict["errors"], []) def test_blocked_lane_allows_planned_missing_worktree_receipt(self) -> None: From d68f6b1a9484f40f1cc237a6a403a65384b836cf Mon Sep 17 00:00:00 2001 From: Moon-Young Date: Wed, 22 Jul 2026 12:42:05 +0000 Subject: [PATCH 2/2] =?UTF-8?q?release:=20Depone=200.2.9=20(ORRO=20#103=20?= =?UTF-8?q?=E2=80=94=20blocked=5Freason=20in=20verdict=20lane=5Fresults)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Propagates the runtime-reported blocked_reason into team-ledger-verdict.json lane_results for blocked lanes (diagnostic passthrough; conditional so passing lanes stay byte-identical). Lets witnessd/ORRO surface the actual lane block cause instead of operators misreading blocked-explicit as an independent-trust- anchor problem. Verdict decision logic unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fae175a5..ff14122c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "depone" -version = "0.2.8" +version = "0.2.9" description = "Workflow designer + cross-platform evidence verifier for AI agent orchestration" license = { text = "MIT" } readme = "README.md"