Skip to content

[Product Gap] Publish a versioned decision-evidence schema #89

Description

@seonghobae

Buyer-visible interoperability gap

EgressWeave needs a provider-neutral machine-readable contract for privacy-minimized EgressDecisionEvidence so SIEM/GRC/naruon/MSA consumers can validate the public evidence envelope without importing implementation classes or adding a runtime schema dependency.

Protected-main implementation

The base product/schema boundary is IMPLEMENTED ON PROTECTED MAIN.

Fresh lineage:

Protected main now:

  • ships egressweave/schemas/decision-evidence-v1.schema.json using JSON Schema Draft 2020-12;
  • exports get_decision_evidence_json_schema() as a standard-library-only detached loader;
  • requires the resource in wheel/source-distribution acceptance;
  • aligns schema/runtime evidence fields including total and IPv4/IPv6 address counts, intentional deny-all allowed_methods: [], uppercase normalized method tokens and permanent CONNECT exclusion;
  • preserves lowercase 64-hex fingerprints and the privacy-minimized authority boundary;
  • changes no destination authorization, DNS/TLS/proxy behavior, request/response limits, credential handling, persistence, telemetry backend or release authority.

Active current-main hardening

Draft PR #208 is the canonical extension that closes a remaining schema/runtime parity gap for the public authority field.

Fresh #208 identity:

  • exact base / protected-main snapshot: 7faf7a3b8a47980113982914000e724ab6a6cda5;
  • exact current head: 88a13f42383cfdb470926ffeb6770c467b12e498;
  • state: open / Draft / mergeable;
  • scope: schema, decision-evidence guidance, and focused schema/loader regressions only.

The current #208 tree requires the externally validated authority to use the same canonical lowercase DNS-hostname plus TCP-port shape that runtime evidence emits. URL syntax, credentials, paths, IP literals, uppercase/noncanonical hostnames, malformed labels, and invalid ports fail schema validation. It changes no request authorization or runtime transport behavior.

Exact-current-head #208 evidence includes successful CI/Python 3.14/package acceptance, exact coverage evidence, SAST, substantive Strix evidence, and a CodeRabbit review bound to exact range 7faf7a3...88a13f4 with no actionable comments. Its Security Scan remains non-passing for supply-chain acceptance because the wrapper succeeded while the actual immutable-pinned Dependency review action was skipped.

Remaining evidence debt

The protected schema implementation and active authority hardening both remain coupled to organization-owned supply-chain evidence:

  • read-only central PR ContextualWisdomLab/.github#897 is still open / mergeable / unmerged at exact head 59505c1d89eb7ea816e921b6da38079c736608c2;
  • aggregate Security Scan success is not accepted while the actual immutable-pinned Dependency review action is skipped;
  • .github is read-only from the EgressWeave writer, so no local substitute, weaker gate, duplicate workflow or clean-head churn is acceptable;
  • after an accepted central repair reaches protected central main, require fresh unchanged-tree evidence in which the actual pinned Dependency Review executes and succeeds.

Acceptance criteria

  • Reconstruct the base schema boundary without transferring predecessor evidence.
  • Publish egressweave.decision-evidence.v1 as JSON Schema Draft 2020-12 with unknown-property rejection.
  • Keep fingerprints lowercase 64-hex values and authority evidence privacy-minimized.
  • Permit intentional deny-all allowed_methods: []; require normalized uppercase tokens when present and reject CONNECT.
  • Require total address_count >= 1 while allowing either address-family count to be zero.
  • Return a fresh detached public schema mapping on every loader call.
  • Keep schema version, packaged resource, runtime evidence and focused deterministic regressions aligned.
  • Require the schema resource in wheel/sdist acceptance and installed-package use.
  • Maintain exact owned-production coverage and beginner-readable public docstrings on the accepted implementation lineage.
  • Merge audit: reconstruct versioned decision-evidence schema on exact current main #181 and retain the base schema contract on protected main.
  • Reconstruct and validate the canonical authority-shape hardening on exact current protected main in security(evidence): bound versioned authority schema #208.
  • Obtain substantive exact-current-head automated/source review and Strix evidence for security(evidence): bound versioned authority schema #208 with zero valid findings.
  • Integrate the separately governed fail-closed Dependency Review repair into protected central main.
  • Obtain fresh unchanged security(evidence): bound versioned authority schema #208 Security Scan evidence whose actual pinned Dependency review action executes and succeeds; wrapper-green/skipped/predecessor evidence is non-passing.
  • Revalidate exact security(evidence): bound versioned authority schema #208 head/live base, required workflows, findings, reviews, threads and live rules immediately before integration.
  • Merge only the unchanged accepted security(evidence): bound versioned authority schema #208 tree, then independently verify the protected/installed package schema against runtime evidence.
  • Close only after protected integration and corrected end-to-end supply-chain evidence; do not create a release merely to close this issue.

Standards baseline

JSON Schema Draft 2020-12 is the v1 schema family; RFC 8259 remains the JSON data-interchange baseline; RFC 9110 defines HTTP method syntax as a case-sensitive token. EgressWeave's uppercase method representation is a v1 normalization contract rather than a claim that arbitrary extension methods are case-insensitive.

Non-goals

No runtime JSON Schema dependency, SIEM vendor coupling, persistence, network call, telemetry backend or policy widening; no claim that schema validation alone proves request authorization or provenance; no EgressWeave-local workaround for organization-owned required workflows.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions