From d6a6a5b8ee960dba08b847cb9b28ad8cc2225416 Mon Sep 17 00:00:00 2001 From: "Claude Code (agent)" Date: Mon, 19 Oct 2026 06:29:03 -0700 Subject: [PATCH 1/4] =?UTF-8?q?fix(engine):=20the=20bind=20host=20becomes?= =?UTF-8?q?=20CORVUS=5FBIND=5FHOST-configurable=20=E2=80=94=20the=20deploy?= =?UTF-8?q?ed=20Service=20and=20probes=20need=20a=20non-loopback=20bind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The v1-local loopback default (127.0.0.1) was correct for the in-process adapter posture but unreachable for the k8s deployment: the Service and the probes target the pod IP, which the loopback bind refuses ('connect: connection refused', the pod's Completed/exit-0 signature). The default stays 127.0.0.1 (the local posture is unchanged); the deployment sets CORVUS_BIND_HOST=0.0.0.0 in the manifest. --- corvus-v2/corvus/engine_shim.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/corvus-v2/corvus/engine_shim.py b/corvus-v2/corvus/engine_shim.py index 5bb94d8..9d60401 100644 --- a/corvus-v2/corvus/engine_shim.py +++ b/corvus-v2/corvus/engine_shim.py @@ -15,6 +15,7 @@ from __future__ import annotations import argparse +import os import sys from pathlib import Path @@ -277,6 +278,7 @@ def hashlib_sha(text: str) -> str: if __name__ == "__main__": ap = argparse.ArgumentParser() ap.add_argument("--port", type=int, default=8933) + ap.add_argument("--host", default=os.environ.get("CORVUS_BIND_HOST", "127.0.0.1")) args = ap.parse_args() import uvicorn - uvicorn.run(app, host="127.0.0.1", port=args.port, log_level="error") + uvicorn.run(app, host=args.host, port=args.port, log_level="error") From 8355422deb4b8c5761df1a0155eecc088f4bc829 Mon Sep 17 00:00:00 2001 From: "Claude Code (agent)" Date: Mon, 19 Oct 2026 06:31:29 -0700 Subject: [PATCH 2/4] =?UTF-8?q?fix(lint):=20the=20engine=5Fshim's=20import?= =?UTF-8?q?s=20consolidated=20at=20the=20top=20=E2=80=94=20the=20E402/F811?= =?UTF-8?q?/F821=20cleaned=20after=20the=20bind-host=20edit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- corvus-v2/corvus/engine_shim.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/corvus-v2/corvus/engine_shim.py b/corvus-v2/corvus/engine_shim.py index 9d60401..be5414d 100644 --- a/corvus-v2/corvus/engine_shim.py +++ b/corvus-v2/corvus/engine_shim.py @@ -21,6 +21,9 @@ sys.path.insert(0, str(Path(__file__).parent.parent)) +from corvus.capture import CaptureStore +from corvus.contract_codes import ERROR_CODES + from fastapi import FastAPI, Request from fastapi.responses import JSONResponse @@ -34,7 +37,7 @@ # THE CLOSED ERROR ENUM (the contract v1.1): every error the boundary emits, # compiler-verified against the fixture corpus (the error-enum coverage # invariant — an uncovered code is a corpus gap = build failure). -from corvus.contract_codes import ERROR_CODES +# (the import itself lives at the module's top with the other imports) def err(code: str, status: int, **fields): @@ -71,9 +74,6 @@ def _site_resolution(site_id: str) -> dict | None: # replay index (the SQLite WAL — F10: a restart does not wipe the replay). # The spike defaults to :memory:; the production config points # CORVUS_CAPTURE_DB at the file. -import os - -from corvus.capture import CaptureStore _CAPTURE = CaptureStore(db_path=os.environ.get("CORVUS_CAPTURE_DB", ":memory:"), max_rows=10_000) From feb117dbfa689d6813e489d271d443a45c65a671 Mon Sep 17 00:00:00 2001 From: "Claude Code (agent)" Date: Mon, 19 Oct 2026 06:33:36 -0700 Subject: [PATCH 3/4] =?UTF-8?q?fix(lint):=20the=20import=20order=20matched?= =?UTF-8?q?=20to=20the=20CI's=20ruff=20=E2=80=94=20the=20third-party=20bef?= =?UTF-8?q?ore=20the=20first-party,=20the=20corvus=20imports=20alphabetize?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- corvus-v2/corvus/engine_shim.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/corvus-v2/corvus/engine_shim.py b/corvus-v2/corvus/engine_shim.py index be5414d..ebddf3a 100644 --- a/corvus-v2/corvus/engine_shim.py +++ b/corvus-v2/corvus/engine_shim.py @@ -21,14 +21,12 @@ sys.path.insert(0, str(Path(__file__).parent.parent)) -from corvus.capture import CaptureStore -from corvus.contract_codes import ERROR_CODES - - from fastapi import FastAPI, Request from fastapi.responses import JSONResponse +from corvus.capture import CaptureStore from corvus.canonical import canonical_json, request_hash +from corvus.contract_codes import ERROR_CODES app = FastAPI(title="Corvus decision-engine shim", version="1.1.0") From 5cfd518980ab7ee29a9170c9502182df30569e09 Mon Sep 17 00:00:00 2001 From: "Claude Code (agent)" Date: Mon, 19 Oct 2026 06:36:21 -0700 Subject: [PATCH 4/4] =?UTF-8?q?fix(lint):=20canonical=20before=20capture?= =?UTF-8?q?=20=E2=80=94=20the=20CI's=20isort=20alphabetization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- corvus-v2/corvus/engine_shim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corvus-v2/corvus/engine_shim.py b/corvus-v2/corvus/engine_shim.py index ebddf3a..15812be 100644 --- a/corvus-v2/corvus/engine_shim.py +++ b/corvus-v2/corvus/engine_shim.py @@ -24,8 +24,8 @@ from fastapi import FastAPI, Request from fastapi.responses import JSONResponse -from corvus.capture import CaptureStore from corvus.canonical import canonical_json, request_hash +from corvus.capture import CaptureStore from corvus.contract_codes import ERROR_CODES app = FastAPI(title="Corvus decision-engine shim", version="1.1.0")