From 8b0c41105269003ddd06df611c6bee0fade6dea4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 5 Oct 2026 20:18:05 +0000 Subject: [PATCH 1/3] chore: sync public mirror from internal --- .repository-projection.json | 6 +++--- vendor/dex-loop/tests/grc_context.rs | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.repository-projection.json b/.repository-projection.json index 00106e970..5ad0f3ff0 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "deixic-code", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "f1457cd20a4b86478bcc70b0152230aaa8a17dea", + "sourceSha": "fbe3c0985f913b28222132dfe68a43cd60fe1983", "destinationRepository": "dx-corp/code", - "priorProjectedBase": "6a1ee9a7f2d6d82fa7f55c3a1dc7c7d8e95c964f", + "priorProjectedBase": "151f172cbc14fbc955f0f221d0b757910e158152", "definitionDigest": "cb9d429542ebb0a2de9b42a7aad60d9d8696a648ceba47c30f05c0b285ca0db7", "toolDigest": "c9112982c70b80737d8faac67d58b06d55bde0dc297eb1009c1b02296f34f4a9", - "contentDigest": "2ee4dc7a3e288db3224383edce5c9dede750c4e7733a87436b0fb14c221b58c0", + "contentDigest": "131f5f98d9bdef8fafe9634d739b51342d1d16f9319eaac05a58c4eabb6b8ed9", "publicationEligible": true } diff --git a/vendor/dex-loop/tests/grc_context.rs b/vendor/dex-loop/tests/grc_context.rs index b5324b225..373ffbfdf 100644 --- a/vendor/dex-loop/tests/grc_context.rs +++ b/vendor/dex-loop/tests/grc_context.rs @@ -3,6 +3,7 @@ mod support; use dex_loop::{ Budget, CancellationToken, Exit, GRC_CONTEXT_BYTES, GRC_GRAPH_TOOL_NAME, Message, Outcome, + Output, }; use serde_json::json; use support::{FakeLog, FakeModel, FakeTools, call, engine, read_tool, text}; @@ -40,8 +41,16 @@ async fn grc_parallel_then_successive_reads_execute_once_and_replay_the_same_his .history() .iter() .filter_map(|e| match &e.message { - Message::Tool { name, outcome, .. } if name.as_str() == GRC_GRAPH_TOOL_NAME => { - Some((outcome, e.message.size())) + Message::Tool { + name, + outcome, + output, + .. + } if name.as_str() == GRC_GRAPH_TOOL_NAME => { + let Output::Text(text) = output else { + panic!("the GRC fixture must produce inline text"); + }; + Some((outcome, text.len())) } _ => None, }) From 0ce707b4ce88fa96dfd167f43ae146e6756a3ae6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 5 Oct 2026 22:52:08 +0000 Subject: [PATCH 2/3] chore: sync public mirror from internal --- .repository-projection.json | 4 +- scripts/capture-tui.py | 10 ++++- scripts/test-capture-tui.py | 11 +++++ scripts/tui_capture_fixture.py | 32 +++++++++++++- .../compliance-120x40.manifest.json | 39 ++++++++++++++++++ .../macos-menlo/compliance-120x40.png | Bin 0 -> 62498 bytes test/fixtures/tui-capture/compliance.json | 16 +++++++ 7 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.manifest.json create mode 100644 test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.png create mode 100644 test/fixtures/tui-capture/compliance.json diff --git a/.repository-projection.json b/.repository-projection.json index 5ad0f3ff0..ce5fd60f4 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "deixic-code", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "fbe3c0985f913b28222132dfe68a43cd60fe1983", + "sourceSha": "c1efea591023f3dc9d95c2ec290341e636ae46ad", "destinationRepository": "dx-corp/code", "priorProjectedBase": "151f172cbc14fbc955f0f221d0b757910e158152", "definitionDigest": "cb9d429542ebb0a2de9b42a7aad60d9d8696a648ceba47c30f05c0b285ca0db7", "toolDigest": "c9112982c70b80737d8faac67d58b06d55bde0dc297eb1009c1b02296f34f4a9", - "contentDigest": "131f5f98d9bdef8fafe9634d739b51342d1d16f9319eaac05a58c4eabb6b8ed9", + "contentDigest": "de81ede7dbb8ea0b995ff906dd445e7f326728faec713423872dd608be41391f", "publicationEligible": true } diff --git a/scripts/capture-tui.py b/scripts/capture-tui.py index 9593bbfa2..dada1ae15 100644 --- a/scripts/capture-tui.py +++ b/scripts/capture-tui.py @@ -313,13 +313,21 @@ def __init__(self, root, binary, columns, rows, fixture=None): self.config.write_text( 'set -g default-terminal "xterm-256color"\nset -g escape-time 0\nset -g status off\n' ) - self.workspace = root / "release-planner" + self.workspace = root / ("security-policy" if fixture and fixture.scene == "compliance" else "release-planner") self.workspace.mkdir() if fixture: (self.workspace / "README.md").write_text( "# Release checklist\n\nA small workspace for planning a team release.\n\n" "1. Choose a release owner.\n2. Review the changes.\n3. Run the checks.\n4. Publish the release.\n5. Write a short release note.\n" ) + if fixture and fixture.scene == "compliance": + (self.workspace / "SECURITY.md").write_text("# Security policy\n\nWe acknowledge reports within two business days.\n") + (self.workspace / "test_security_policy.py").write_text( + "from pathlib import Path\nimport unittest\n\n" + "class SecurityPolicyTest(unittest.TestCase):\n" + " def test_private_reporting(self):\n self.assertIn('security@acme.example', Path('SECURITY.md').read_text())\n" + " def test_response_commitment(self):\n self.assertIn('two business days', Path('SECURITY.md').read_text())\n" + ) self.env = { "PATH": os.environ.get("PATH", "/usr/bin:/bin"), "HOME": str(root), diff --git a/scripts/test-capture-tui.py b/scripts/test-capture-tui.py index 82044f245..b312ca757 100644 --- a/scripts/test-capture-tui.py +++ b/scripts/test-capture-tui.py @@ -62,6 +62,17 @@ def test_light_scenes_select_real_palette_and_reduced_motion_is_explicit(self): self.assertIn({"text": "/dex motion-off"}, reduced["steps"]) self.assertEqual(reduced["steps"][-1], {"wait": "Dex appreciates the boop"}) + def test_compliance_fixture_refuses_unproven_success(self): + from tui_capture_fixture import CaptureFixture + with CaptureFixture("compliance") as fixture: + base = fixture.environment()["MAESTRO_IDENTITY_URL"] + fixture.turn = 3 + request = urllib.request.Request(base + "/v1/chat/completions", data=json.dumps({"messages": []}).encode(), headers={"Content-Type": "application/json"}) + with self.assertRaises(urllib.error.HTTPError) as raised: + urllib.request.urlopen(request, timeout=3) + self.assertEqual(raised.exception.code, 409) + self.assertIn(b"requires actual passing regression test", raised.exception.read()) + def test_fixture_serves_only_local_scripted_contracts(self): from tui_capture_fixture import CaptureFixture diff --git a/scripts/tui_capture_fixture.py b/scripts/tui_capture_fixture.py index b096f23a0..2cf113021 100644 --- a/scripts/tui_capture_fixture.py +++ b/scripts/tui_capture_fixture.py @@ -33,7 +33,35 @@ def do_POST(self): if self.path in {"/v1/chat/completions", "/v1/responses"}: responses = self.path == "/v1/responses" fixture.turn += 1 - if fixture.scene == "streaming": + if fixture.scene == "compliance": + request = json.loads(request_body) + messages = request.get("input", []) if responses else request.get("messages", []) + results = [str(message.get("content", message.get("output", ""))) for message in messages + if message.get("role") == "tool" or message.get("type") == "function_call_output"] + def tool(name, args): + return {"role": "assistant", "tool_calls": [{"index": 0, "id": f"compliance-{fixture.turn}", "type": "function", "function": {"name": name, "arguments": json.dumps(args)}}]} + if fixture.turn == 1: + delta = tool("read", {"path": "SECURITY.md"}) + finish = "tool_calls" + elif fixture.turn == 2: + if not any("Security policy" in result for result in results): + self.send_error(409, "requires actual security file read") + return + delta = tool("write", {"path": "SECURITY.md", "content": "# Security policy\n\nReport vulnerabilities privately to security@acme.example.\nWe acknowledge reports within two business days.\n"}) + finish = "tool_calls" + elif fixture.turn == 3: + delta = tool("bash", {"command": "python3 -m unittest test_security_policy -v"}) + finish = "tool_calls" + elif fixture.turn == 4: + if not any("OK" in result and "test_private_reporting" in result for result in results): + self.send_error(409, "requires actual passing regression test") + return + delta = {"role": "assistant", "content": "Fixed SECURITY.md after your approval.\n\n- Added a private vulnerability reporting address.\n- Kept the two-business-day response commitment.\n- Read the file in the regression test: 2 tests pass.\n\nThe local change is ready for review. Production publication and the SOC 2 control re-test are still pending."} + finish = "stop" + else: + self.send_error(409, "capture fixture exhausted") + return + elif fixture.scene == "streaming": self.send_response(200) self.send_header("Content-Type", "text/event-stream") self.end_headers() @@ -62,7 +90,7 @@ def do_POST(self): self.wfile.flush() fixture.stopped.wait(20) return - if fixture.scene == "long-conversation": + elif fixture.scene == "long-conversation": delta = { "role": "assistant", "content": "Release review\n\n" diff --git a/test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.manifest.json b/test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.manifest.json new file mode 100644 index 000000000..9cd19abed --- /dev/null +++ b/test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.manifest.json @@ -0,0 +1,39 @@ +{ + "scenario": "compliance", + "scenario_sha256": "41a647918bd724893856779f19a413561b6ac014e9755e20d69a189f6489af54", + "binary": "/Users/jonathanhaas/Documents/Codex/2026-10-05/lo/work/maestro-target/debug/maestro", + "columns": 120, + "rows": 40, + "font": "/System/Library/Fonts/Menlo.ttc", + "font_sha256": "f2d400484a6aace67980730ec0a9ef24ce9e535a2604f118e6fdc2510021b85f", + "font_size": 18, + "terminal_palette": { + "default": "#e6e4e0", + "black": "#1b1c1e", + "red": "#d28b87", + "green": "#a0b69a", + "brown": "#c9b58c", + "blue": "#96a9c7", + "magenta": "#b0a2cb", + "cyan": "#93b6b3", + "white": "#d8d6d2", + "brightblack": "#85868b", + "brightred": "#e3a19b", + "brightgreen": "#b3c8ac", + "brightbrown": "#ddc9a1", + "brightblue": "#acbdd8", + "brightmagenta": "#c3b5de", + "brightcyan": "#a8cbc8", + "brightwhite": "#f4f2ee" + }, + "status": "passed", + "binary_sha256": "8a94378908f17bce6249a022b61b7bc6f367a90b24302b0e1e6b272c03ed0287", + "backend": "local-scripted-fixture", + "binary_version": "deixic-code 0.10.111", + "cursor": [ + 2, + 36 + ], + "identity_requests": 3, + "model_requests": 4 +} diff --git a/test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.png b/test/fixtures/tui-capture/baselines/macos-menlo/compliance-120x40.png new file mode 100644 index 0000000000000000000000000000000000000000..e1643d74278c8755ab489fe846a0510a007d8d33 GIT binary patch literal 62498 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 KhglC^xc)b{$QOtJ literal 0 HcmV?d00001 diff --git a/test/fixtures/tui-capture/compliance.json b/test/fixtures/tui-capture/compliance.json new file mode 100644 index 000000000..826226c1e --- /dev/null +++ b/test/fixtures/tui-capture/compliance.json @@ -0,0 +1,16 @@ +{ + "name": "compliance", + "steps": [ + {"wait": "(?s)Dex.*GPT-6 Astra.*security-policy"}, + {"text": "Fix SECURITY.md and run its tests."}, + {"wait": "Fix SECURITY.md and run its tests"}, + {"key": "Enter"}, + {"wait": "Action Approval Required"}, + {"key": "Enter"}, + {"wait": "Action Approval Required"}, + {"key": "Enter"}, + {"wait": "2 tests pass"}, + {"absent": "Working|Thinking"}, + {"wait": "Dex ยท finished"} + ] +} From b107a88bfc697a17a0fbf4560419225c72b12d7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 5 Oct 2026 23:59:41 +0000 Subject: [PATCH 3/3] chore: sync public mirror from internal --- .repository-projection.json | 4 ++-- vendor/dex-loop/src/lib.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.repository-projection.json b/.repository-projection.json index ce5fd60f4..d50d3a106 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "deixic-code", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "c1efea591023f3dc9d95c2ec290341e636ae46ad", + "sourceSha": "d42a9af9edd2a1c5b5ec9076c68bc30a3b83a83e", "destinationRepository": "dx-corp/code", "priorProjectedBase": "151f172cbc14fbc955f0f221d0b757910e158152", "definitionDigest": "cb9d429542ebb0a2de9b42a7aad60d9d8696a648ceba47c30f05c0b285ca0db7", "toolDigest": "c9112982c70b80737d8faac67d58b06d55bde0dc297eb1009c1b02296f34f4a9", - "contentDigest": "de81ede7dbb8ea0b995ff906dd445e7f326728faec713423872dd608be41391f", + "contentDigest": "81d79f31e8f1483766e9eb0012fe456a12bb8d3b38162bc7fa515a95af275ba0", "publicationEligible": true } diff --git a/vendor/dex-loop/src/lib.rs b/vendor/dex-loop/src/lib.rs index 6fbb2488d..50a144964 100644 --- a/vendor/dex-loop/src/lib.rs +++ b/vendor/dex-loop/src/lib.rs @@ -76,4 +76,4 @@ pub use agent_codemode::{ModelBinding, ModelOperation, OutputBlock}; pub use codemode_output::validate_codemode_blocks; mod grc_context; -pub use grc_context::{GRC_CONTEXT_BYTES, GRC_GRAPH_TOOL_NAME, GRC_RESULT_BYTES}; +pub use grc_context::{GRC_CONTEXT_BYTES, GRC_GRAPH_TOOL_NAME};