feat(omnl): settlement terminal, compliance gates, and HYBX integration foundation
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m12s
CI/CD Pipeline / Security Scanning (push) Successful in 2m21s
CI/CD Pipeline / Lint and Format (push) Failing after 36s
CI/CD Pipeline / Terraform Validation (push) Failing after 22s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 25s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 23s
Validation / validate-genesis (push) Successful in 26s
Validation / validate-terraform (push) Failing after 21s
Validation / validate-kubernetes (push) Failing after 9s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-security (push) Failing after 1m15s
Validation / validate-documentation (push) Failing after 15s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 26s
Verify Deployment / Verify Deployment (push) Failing after 56s

Add operator settlement terminal UI/API, swift-listener service, compliance
idempotency gates, GRU reserve dashboards, and @dbis/integration-foundation
for typed HYBX/ISO adapter contracts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-06-07 21:51:32 -07:00
parent b6ddd236e2
commit d717b504a6
182 changed files with 10852 additions and 40 deletions

View File

@@ -16,7 +16,18 @@ import base64
# Import base configuration tool
sys.path.insert(0, str(Path(__file__).parent))
from configure_network import NetworkConfigurator, Colors, print_header, print_success, print_error, print_warning, print_info
from configure_network import (
NetworkConfigurator,
Colors,
print_header,
print_success,
print_error,
print_warning,
print_info,
input_yes_no,
input_int,
input_with_default,
)
class AdvancedNetworkConfigurator(NetworkConfigurator):
"""Extended network configurator with advanced options"""

View File

@@ -135,7 +135,10 @@ class ConfigurationValidator:
if not self._validate_cidr(subnet_cidr):
self.errors.append(f"Invalid {subnet_name} subnet: {subnet_cidr}. Must be valid CIDR notation")
else:
subnet_network, subnet_mask = self._parse_cidr(subnet_cidr)
parsed_subnet = self._parse_cidr(subnet_cidr)
if parsed_subnet is None:
continue
subnet_network, subnet_mask = parsed_subnet
if subnet_network and not self._is_subnet_of(subnet_network, subnet_mask, vnet_network, vnet_mask):
self.errors.append(f"{subnet_name} subnet {subnet_cidr} is not within VNet {vnet_address}")
if subnet_mask < vnet_mask:

View File

@@ -80,7 +80,7 @@ def input_with_default(prompt: str, default: str = "", validate_func=None) -> st
continue
return value
def input_int(prompt: str, default: int = 0, min_val: int = None, max_val: int = None) -> int:
def input_int(prompt: str, default: int = 0, min_val: Optional[int] = None, max_val: Optional[int] = None) -> int:
"""Get integer input with validation"""
while True:
try:
@@ -161,7 +161,7 @@ def validate_chain_id(chain_id: str) -> bool:
class NetworkConfigurator:
def __init__(self, project_root: Path):
self.project_root = project_root
self.config = {}
self.config: Dict[str, Any] = {}
self.backup_dir = project_root / ".config-backup"
def backup_existing_files(self):
@@ -252,12 +252,14 @@ class NetworkConfigurator:
# Subnets
print_info("\nSubnet Configuration")
self.config['network']['subnets'] = {
network_cfg: Dict[str, Any] = dict(self.config['network'])
network_cfg['subnets'] = {
'validators': input_with_default("Validators subnet (CIDR)", "10.0.1.0/24", validate_cidr),
'sentries': input_with_default("Sentries subnet (CIDR)", "10.0.2.0/24", validate_cidr),
'rpc': input_with_default("RPC subnet (CIDR)", "10.0.3.0/24", validate_cidr),
'aks': input_with_default("AKS subnet (CIDR)", "10.0.4.0/24", validate_cidr),
}
self.config['network'] = network_cfg
# Node counts
print_info("\nNode Configuration")

View File

@@ -0,0 +1,48 @@
"""Import shim for configure-network.py (hyphenated filename)."""
from __future__ import annotations
import importlib.util
from pathlib import Path
from typing import Any, Callable
_impl_path = Path(__file__).with_name("configure-network.py")
_spec = importlib.util.spec_from_file_location("_configure_network_impl", _impl_path)
if _spec is None or _spec.loader is None:
raise ImportError(f"Cannot load {_impl_path}")
_impl = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(_impl)
NetworkConfigurator = _impl.NetworkConfigurator
Colors = _impl.Colors
print_header: Callable[..., None] = _impl.print_header
print_success: Callable[..., None] = _impl.print_success
print_error: Callable[..., None] = _impl.print_error
print_warning: Callable[..., None] = _impl.print_warning
print_info: Callable[..., None] = _impl.print_info
input_with_default: Callable[..., str] = _impl.input_with_default
input_int: Callable[..., int] = _impl.input_int
input_yes_no: Callable[..., bool] = _impl.input_yes_no
input_hex: Callable[..., str] = _impl.input_hex
validate_ip: Callable[[str], bool] = _impl.validate_ip
validate_cidr: Callable[[str], bool] = _impl.validate_cidr
validate_port: Callable[[str], bool] = _impl.validate_port
validate_chain_id: Callable[[str], bool] = _impl.validate_chain_id
__all__ = [
"NetworkConfigurator",
"Colors",
"print_header",
"print_success",
"print_error",
"print_warning",
"print_info",
"input_with_default",
"input_int",
"input_yes_no",
"input_hex",
"validate_ip",
"validate_cidr",
"validate_port",
"validate_chain_id",
]

View File

@@ -0,0 +1,17 @@
"""Import shim for configure-network-validation.py (hyphenated filename)."""
from __future__ import annotations
import importlib.util
from pathlib import Path
_impl_path = Path(__file__).with_name("configure-network-validation.py")
_spec = importlib.util.spec_from_file_location("_configure_network_validation_impl", _impl_path)
if _spec is None or _spec.loader is None:
raise ImportError(f"Cannot load {_impl_path}")
_impl = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(_impl)
ConfigurationValidator = _impl.ConfigurationValidator
ValidationError = _impl.ValidationError
__all__ = ["ConfigurationValidator", "ValidationError"]

View File

@@ -9,6 +9,7 @@ import re
import sys
from collections import Counter
from pathlib import Path
from typing import Any, cast
EXCLUDED_PARTS = {"artifacts", "broadcast", "cache", "lib", "node_modules", "out"}
@@ -96,8 +97,10 @@ def create_report(repo_root: Path) -> dict[str, object]:
}
def print_text(report: dict[str, object]) -> None:
summary = report["summary"]
def print_text(report: dict[str, Any]) -> None:
summary = cast(dict[str, int], report["summary"])
unreachable_by_bucket = cast(dict[str, int], report["unreachableByBucket"])
unreachable_contracts = cast(list[str], report["unreachableContracts"])
print(f"repo root: {report['repoRoot']}")
print(f"contracts total: {summary['contractsTotal']}")
print(f"tests/scripts roots total: {summary['rootsTotal']}")
@@ -106,11 +109,11 @@ def print_text(report: dict[str, object]) -> None:
print(f"contracts with no local inbound refs: {summary['contractsWithNoLocalInboundRefs']}")
print()
print("Unreachable by top-level bucket:")
for bucket, count in report["unreachableByBucket"].items():
for bucket, count in unreachable_by_bucket.items():
print(f" {bucket}: {count}")
print()
print("Archive candidates (unreachable from current tests/scripts):")
for contract in report["unreachableContracts"]:
for contract in unreachable_contracts:
print(f" {contract}")
print()
print("Note: unreachable does not prove safe deletion; it only means this repo's current Solidity tests/scripts do not import the file.")