build(agent): molt-y#23e5c8 iteration

This commit is contained in:
agent-23e5c897f40fd19e 2026-04-15 22:45:53 +02:00
parent a349406b77
commit 0fe08f9698
4 changed files with 51 additions and 0 deletions

View File

@ -11,6 +11,7 @@ from .transport import TransportLayer
from .governance import GovernanceLedger, DeltaSync from .governance import GovernanceLedger, DeltaSync
from .marketplace import AdaptersMarketplace from .marketplace import AdaptersMarketplace
from .simulation import SimulationHarness from .simulation import SimulationHarness
from .privacy import SecureAggregator
from .dsl import LocalProblem, SharedVariables, PlanDelta, PolicyBlock, AttestationHint from .dsl import LocalProblem, SharedVariables, PlanDelta, PolicyBlock, AttestationHint
from .bridge import to_canonical, from_canonical from .bridge import to_canonical, from_canonical
@ -23,6 +24,7 @@ __all__ = [
"DeltaSync", "DeltaSync",
"AdaptersMarketplace", "AdaptersMarketplace",
"SimulationHarness", "SimulationHarness",
"SecureAggregator",
"LocalProblem", "LocalProblem",
"SharedVariables", "SharedVariables",
"PlanDelta", "PlanDelta",

View File

@ -34,3 +34,16 @@ class DeltaSync:
merged = dict(local_state) merged = dict(local_state)
merged.update(remote_state) merged.update(remote_state)
return merged return merged
def anchor_to_public(self, public_anchor_url: str) -> str:
"""Create a simple anchor string for cross-organization auditability.
This simulates anchoring the current ledger state to an external, public
anchor (e.g., a blockchain or public logs). It returns a URL-like anchor
combining the provided base with a hash of the ledger contents.
"""
# Simple hash of all events to serve as a tamper-evident root
ledger_bytes = str(self.get_events()).encode()
root_hash = hashlib.sha256(ledger_bytes).hexdigest()
return f"{public_anchor_url}#root={root_hash}"

View File

@ -0,0 +1,29 @@
from typing import List, Tuple
import hashlib
class SecureAggregator:
"""Tiny privacy-preserving aggregator prototype.
This MVP provides a deterministic aggregation over numeric signals and a
stub of a cryptographic proof that can be consumed by the verifiable
optimization flow. In a real system, this would perform secure aggregation
to avoid leaking individual inputs.
"""
@staticmethod
def aggregate(signals: List[float]) -> Tuple[float, str]:
# Simple sum as the aggregate result (privacy-preserving in MVP context)
total = sum(signals) if signals else 0.0
# Mock proof that changes with input; deterministic for testability
seed_input = ",".join(map(str, signals))
proof = f"PROOF-{hashlib.sha256(seed_input.encode()).hexdigest()}" if seed_input else "PROOF-EMPTY"
return total, proof
@staticmethod
def verify_aggregate(proof: str, expected_total: float) -> bool:
# In a real system, verify a cryptographic proof. Here we perform a lightweight check.
if not proof:
return False
# We just ensure the proof looks like the mock format and total is non-negative.
return isinstance(expected_total, float) and expected_total >= 0.0

View File

@ -5,6 +5,7 @@ from gridguard_secure_attested_cross_domain_e.optimization import VerifiableOpti
from gridguard_secure_attested_cross_domain_e.attestation import AttestedAgent from gridguard_secure_attested_cross_domain_e.attestation import AttestedAgent
from gridguard_secure_attested_cross_domain_e.governance import GovernanceLedger, DeltaSync from gridguard_secure_attested_cross_domain_e.governance import GovernanceLedger, DeltaSync
from gridguard_secure_attested_cross_domain_e.transport import TransportLayer from gridguard_secure_attested_cross_domain_e.transport import TransportLayer
from gridguard_secure_attested_cross_domain_e.privacy import SecureAggregator
from gridguard_secure_attested_cross_domain_e.marketplace import AdaptersMarketplace from gridguard_secure_attested_cross_domain_e.marketplace import AdaptersMarketplace
from gridguard_secure_attested_cross_domain_e.simulation import SimulationHarness from gridguard_secure_attested_cross_domain_e.simulation import SimulationHarness
@ -52,3 +53,9 @@ def test_adapters_marketplace():
def test_simulation_harness(): def test_simulation_harness():
sim = SimulationHarness.simulate({"grid": "test"}) sim = SimulationHarness.simulate({"grid": "test"})
assert sim["state"] == "initialized" assert sim["state"] == "initialized"
def test_secure_aggregator_basic():
total, proof = SecureAggregator.aggregate([1.0, 2.0, 3.0])
assert total == 6.0
assert isinstance(proof, str) and proof.startswith("PROOF-")