Consumer defect
Wardnet currently needs outbound HTTP authority for feed/TAXII/KEV/proxy/security-evidence paths, but the live EgressWeave owner surface cannot yet be consumed by a Rust-first service without either recreating EgressWeave's destination/DNS/redirect/proxy/TLS/resource policy or depending on mutable sibling source.
Exact consumer evidence: ContextualWisdomLab/wardnet#136 is Draft at 3cb1047416c3aa7fa8eb352b842cc55ad8c21b19 on protected main@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128. Its current local implementation performs hostname/IP validation, manual DNS resolution and address pinning, no-proxy/no-redirect policy and bounded client lifecycle. It also carries an unresolved causal RED showing manual DNS can outlive the intended end-to-end feed/TAXII/KEV request budget. Under the current CWL bounded-context contract, that semantic outbound-policy authority belongs here rather than becoming a second Wardnet implementation.
Fresh EgressWeave state has default_branch=main and no GitHub Release. Current owner work includes substantial security/policy hardening, while ADR/consumer work in #233 documents that the older released Python surface is insufficient even for some same-language CI consumers. A transient PR head, source checkout or commit-vendored implementation is not an acceptable production contract for Wardnet.
RED acceptance
A Wardnet/Rust consumer must be able to prove all of the following without copying EgressWeave policy implementation:
- no direct reuse of mutable EgressWeave PR/source internals and no cross-service SQL;
- destination authority, special-purpose-address handling, DNS rebinding resistance, redirect/proxy/TLS/resource policy and stable denial semantics remain EgressWeave-owned;
- unavailable, incompatible or unverifiable owner evidence fails closed;
- one operation budget cannot be bypassed by spending unbounded time in a pre-request DNS phase;
- decision/evidence identity is bound to an immutable released EgressWeave contract/version rather than a prose or commit-only assertion.
GREEN acceptance
Publish an immutable, versioned consumer boundary that a Rust service can consume through an explicit ACL/port. The owner implementation may choose the appropriate transport/API shape; the contract should expose only provider-neutral authorization inputs, decision/denial output and minimized evidence needed by a consumer. It must include:
- stable versioned schema/API and compatibility rules;
- exact release/package identity with SBOM/provenance/reproducibility evidence;
- bounded end-to-end timing semantics covering any owner-required DNS work plus HTTP authority decision, or an equivalently strong documented execution contract;
- hostile conformance vectors for SSRF, DNS rebinding, special-purpose/private/link-local targets, redirects, ambient proxies, TLS/trust substitution and resource exhaustion;
- deterministic fail-closed behavior for unsupported contract versions or unavailable authority;
- a consumer example or conformance fixture sufficient for Wardnet to replace its local semantic policy with a thin Rust ACL/adapter while retaining Wardnet-owned SOC/admission evidence semantics.
Wardnet #136 should remain a Draft evidence/consumer lane until this owner contract is released. Its hostile tests and current DNS-deadline RED are useful acceptance evidence, but the semantic policy implementation should not become protected Wardnet truth if doing so duplicates this bounded context.
Consumer defect
Wardnet currently needs outbound HTTP authority for feed/TAXII/KEV/proxy/security-evidence paths, but the live EgressWeave owner surface cannot yet be consumed by a Rust-first service without either recreating EgressWeave's destination/DNS/redirect/proxy/TLS/resource policy or depending on mutable sibling source.
Exact consumer evidence:
ContextualWisdomLab/wardnet#136is Draft at3cb1047416c3aa7fa8eb352b842cc55ad8c21b19on protectedmain@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128. Its current local implementation performs hostname/IP validation, manual DNS resolution and address pinning, no-proxy/no-redirect policy and bounded client lifecycle. It also carries an unresolved causal RED showing manual DNS can outlive the intended end-to-end feed/TAXII/KEV request budget. Under the current CWL bounded-context contract, that semantic outbound-policy authority belongs here rather than becoming a second Wardnet implementation.Fresh EgressWeave state has
default_branch=mainand no GitHub Release. Current owner work includes substantial security/policy hardening, while ADR/consumer work in #233 documents that the older released Python surface is insufficient even for some same-language CI consumers. A transient PR head, source checkout or commit-vendored implementation is not an acceptable production contract for Wardnet.RED acceptance
A Wardnet/Rust consumer must be able to prove all of the following without copying EgressWeave policy implementation:
GREEN acceptance
Publish an immutable, versioned consumer boundary that a Rust service can consume through an explicit ACL/port. The owner implementation may choose the appropriate transport/API shape; the contract should expose only provider-neutral authorization inputs, decision/denial output and minimized evidence needed by a consumer. It must include:
Wardnet #136 should remain a Draft evidence/consumer lane until this owner contract is released. Its hostile tests and current DNS-deadline RED are useful acceptance evidence, but the semantic policy implementation should not become protected Wardnet truth if doing so duplicates this bounded context.