Skip to content

Commit 11f24ae

Browse files
committed
Release RelayX v0.1.11 evidence contracts
1 parent 2369860 commit 11f24ae

32 files changed

Lines changed: 1433 additions & 74 deletions

README.md

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ telemetry.
7070
- Standard lab matrix planning and corpus coverage verification for HTTP/IIS
7171
EPA, AD CS Web Enrollment EPA, LDAP signing, LDAPS CBT, and MSSQL
7272
encryption/EPA states.
73+
- Lab response differential analysis for stable policy-state pairs, including
74+
discriminator keys, context-only differences, and promotion support.
75+
- Evidence completeness reporting for finding/path records, including protocol
76+
judgement fields, confidence distribution, missing contract keys, and
77+
remaining uncertainty.
7378
- Guarded validation and execution records with dry-run, armed, and confirmed
7479
modes, operator context, timebox/noise/scope checks, and JSONL audit logs.
7580
- Source validation planning for WebClient/WebDAV, RPC coercion surfaces,
@@ -83,8 +88,9 @@ telemetry.
8388
module definitions, credential policy guardrails, listener policy guardrails,
8489
and audited adapter lifecycle records.
8590
- Versioned schema and evidence contract validation for result files, lab
86-
profiles, corpuses, execution records, module manifests, OpenGraph, JSONL,
87-
CSV, OPSEC policy, and route report artifacts.
91+
profiles, corpuses, lab stability and differential reports, execution
92+
records, evidence reports, module manifests, OpenGraph, JSONL, CSV, OPSEC
93+
policy, and route report artifacts.
8894
- Enterprise outputs for graph analysis, SIEM ingestion, spreadsheet review,
8995
HTML/Markdown reporting, scan diffing, and remediation impact simulation.
9096
- Enterprise bundle generation with manifest, artifact hashes, schema status,
@@ -144,6 +150,7 @@ Review relay paths, decisions, controls, and remediation:
144150
relayx paths result.json
145151
relayx routes --result result.json
146152
relayx calculus result.json
153+
relayx evidence-report --result result.json
147154
relayx controls result.json
148155
relayx fixes result.json
149156
relayx plan result.json PX-0001 --format json --out plan.json
@@ -212,8 +219,10 @@ relayx lab-matrix Print the standard RelayX lab policy matrix
212219
relayx lab-corpus Extract lab calibration signatures from a result
213220
relayx lab-verify Verify lab corpuses against the standard matrix
214221
relayx lab-stability Assess repeat-capture lab stability and drift
222+
relayx lab-diff Compare stable lab policy-state response differences
215223
relayx lab-index Summarize lab signature corpuses
216224
relayx lab-profile Generate a calibration profile draft from corpuses
225+
relayx evidence-report Audit evidence completeness and judgement fields
217226
relayx validate Run guarded active validation for one path
218227
relayx profiles List bundled RelayX profiles
219228
relayx export Export graph, JSONL, CSV, report, or diagram artifacts
@@ -295,12 +304,17 @@ relayx schema validate --kind module-manifest fixtures/execution_modules
295304
```
296305

297306
Supported kinds include `result`, `evidence`, `lab-profile`, `lab-corpus`,
298-
`lab-stability`, `execution-record`, `module-manifest`, `opsec-policy`,
299-
`route-report`, `bundle-manifest`, `quality-gate`, `opengraph`, `jsonl`, and
300-
`csv`.
307+
`lab-stability`, `lab-differential`, `evidence-report`, `execution-record`,
308+
`module-manifest`, `opsec-policy`, `route-report`, `bundle-manifest`,
309+
`quality-gate`, `opengraph`, `jsonl`, and `csv`.
301310
Validation reports explain invalid fields by path and return exit code `2` when
302311
an artifact does not satisfy the selected contract.
303312

313+
`relayx evidence-report -r result.json` audits an existing result without
314+
network activity. It highlights candidate or relayable records without
315+
evidence, protocol judgement records missing policy inference or remaining
316+
uncertainty, and evidence entries that still carry unknown confidence.
317+
304318
## Calibration
305319

306320
RelayX is deliberately conservative when network evidence is ambiguous. Lab
@@ -313,6 +327,7 @@ relayx compare-baseline --baseline epa-off.json --candidate epa-required.json --
313327
relayx lab-matrix --target-family mssql_epa --format json --out lab-matrix.json
314328
relayx lab-verify --corpus fixtures/lab_corpus --format json --out lab-verify.json
315329
relayx lab-stability --corpus fixtures/lab_corpus --min-captures 2 --format json --out lab-stability.json
330+
relayx lab-diff --corpus fixtures/lab_corpus --target-family http_iis_epa --format json --out lab-diff.json
316331
relayx lab-corpus result.json --label iis-epa-required --policy-state epa_required --expected-state epa_or_cbt_enforcement_signal --promotion promote --format json --out corpus.json
317332
relayx lab-profile --corpus corpus.json --profile-id http_iis_epa_lab --target-family http_iis_epa --service http --format json --out profile.json
318333
```
@@ -321,11 +336,12 @@ Calibration can promote a finding only when the supplied profile and baseline
321336
difference support that conclusion. Otherwise RelayX keeps the original
322337
conservative state and explains the remaining uncertainty.
323338

324-
`lab-matrix`, `lab-verify`, `lab-stability`, `lab-corpus`, and `lab-profile`
325-
are offline research helpers. They do not create network traffic; they turn
326-
already captured RelayX results into reusable signature corpuses, verify
327-
coverage against the standard policy matrix, measure repeat-capture stability
328-
and drift, and generate profile drafts for review.
339+
`lab-matrix`, `lab-verify`, `lab-stability`, `lab-diff`, `lab-corpus`, and
340+
`lab-profile` are offline research helpers. They do not create network traffic;
341+
they turn already captured RelayX results into reusable signature corpuses,
342+
verify coverage against the standard policy matrix, measure repeat-capture
343+
stability and drift, compare stable policy-state response differentials, and
344+
generate profile drafts for review.
329345

330346
## Safety Boundary
331347

docs/CLI.md

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ relayx help export -f json
3636

3737
- Assessment: `scan`, `assess`, `summary`, `matrix`, `sources`, `routes`,
3838
`paths`, `rank`, `explain`
39-
- Analysis: `calculus`, `controls`, `fixes`, `plan`, `calibrate`,
40-
`compare-baseline`, `lab-matrix`, `lab-corpus`, `lab-verify`,
41-
`lab-stability`, `lab-profile`
39+
- Analysis: `calculus`, `controls`, `fixes`, `plan`, `evidence-report`,
40+
`calibrate`, `compare-baseline`, `lab-matrix`, `lab-corpus`, `lab-verify`,
41+
`lab-stability`, `lab-diff`, `lab-profile`
4242
- Validation: `validate`, `source-check`, `source-plan`, `run`
4343
- Enterprise: `profiles`, `report`, `export`, `bundle`, `diff`,
4444
`simulate-fixes`, `quality-gate`
@@ -94,6 +94,21 @@ live reachability from the operator host. Source profiles can provide
9494
`route_hops`. Structured routes produce stronger reachability evidence than
9595
unconstrained labels.
9696

97+
## Evidence Report
98+
99+
```bash
100+
relayx evidence-report -r result.json
101+
relayx evidence-report -r examples/tutorial/sample-result.json -f json -o evidence-report.json
102+
relayx schema validate -k evidence-report evidence-report.json
103+
```
104+
105+
`evidence-report` audits an existing result offline. It reports whether
106+
candidate or relayable records have evidence, whether protocol judgement
107+
records expose response classification, policy inference, and remaining
108+
uncertainty, and whether any evidence still has unknown confidence. It is meant
109+
for lab promotion review, enterprise handoff, and fixture quality checks; it
110+
does not scan, validate, relay, or mutate the result file.
111+
97112
## Schema Contracts
98113

99114
```bash
@@ -105,9 +120,9 @@ relayx schema validate -k jsonl relayx-events.jsonl
105120
```
106121

107122
Supported schema kinds are `result`, `evidence`, `lab-profile`, `lab-corpus`,
108-
`lab-stability`, `execution-record`, `module-manifest`, `opsec-policy`,
109-
`route-report`, `bundle-manifest`, `quality-gate`, `opengraph`, `jsonl`, and
110-
`csv`.
123+
`lab-stability`, `lab-differential`, `evidence-report`, `execution-record`,
124+
`module-manifest`, `opsec-policy`, `route-report`, `bundle-manifest`,
125+
`quality-gate`, `opengraph`, `jsonl`, and `csv`.
111126
Invalid artifacts return exit code `2`.
112127

113128
Pin `-k/--kind` when validating a directory. Auto inference is useful for a
@@ -154,6 +169,7 @@ relayx lab-verify -c fixtures/lab_corpus
154169
relayx lab-verify -c fixtures/lab_corpus -t ldaps_cbt -m 2 -f json
155170
relayx lab-stability -c fixtures/lab_corpus -m 2
156171
relayx lab-stability -c fixtures/lab_corpus -t mssql_epa -m 3 -T 0.9 -f json
172+
relayx lab-diff -c fixtures/lab_corpus -t http_iis_epa -p epa_off:epa_required -f json
157173
```
158174

159175
`lab-matrix` prints the standard policy-state coverage plan for HTTP/IIS EPA,
@@ -169,6 +185,14 @@ remain promotable or are downgraded to `retain`. The command defaults to
169185
`--min-captures 2` and `--stable-threshold 0.85`; increase both when building a
170186
profile intended for high-assurance lab promotion.
171187

188+
`lab-diff` compares stable policy-state signatures from the corpus and reports
189+
which changed fields are response discriminators versus context-only
190+
differences. It is useful for reviewing HTTP/IIS EPA, AD CS EPA, LDAP signing,
191+
LDAPS CBT, and MSSQL encryption/EPA response deltas before editing calibration
192+
profiles. It does not compare two result files; use `compare-baseline` for that
193+
workflow. Unmatched `-p/--pair` filters are reported as warnings so a typo does
194+
not silently produce an empty pass report.
195+
172196
## Execution Adapter SDK
173197

174198
`relayx modules` and `relayx module-plan` expose both module manifests and the

docs/ENTERPRISE_OUTPUTS.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ relayx bundle -r result.json -d relayx-bundle
1717
relayx diff old-result.json new-result.json --format json --out relayx-diff.json
1818
relayx simulate-fixes result.json --control smb_signing --format json
1919
relayx routes --result result.json --format json --out relayx-routes.json
20+
relayx evidence-report --result result.json --format json --out relayx-evidence-report.json
2021
relayx quality-gate -C . -f json -o relayx-quality-gate.json
2122
relayx schema validate --kind opengraph relayx-opengraph.json
2223
relayx schema validate --kind jsonl relayx-events.jsonl
@@ -85,8 +86,8 @@ for CI and ingestion pipeline checks.
8586
`relayx quality-gate` is the local CI and release gate. It validates package
8687
metadata, schema catalog coverage, JSON fixtures, schema fixture directories,
8788
enterprise output matrix coverage, lab matrix coverage, lab stability checks,
88-
documentation coverage, and GitHub Actions workflow presence. Failed gates
89-
return exit code `2`.
89+
lab differential checks, evidence-report checks, documentation coverage, and
90+
GitHub Actions workflow presence. Failed gates return exit code `2`.
9091

9192
```bash
9293
relayx quality-gate -C . -f json -o relayx-quality-gate.json

docs/LAB_VALIDATION.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ offline tutorial in [`docs/TUTORIAL.md`](TUTORIAL.md) and the fixtures in
1919
Every protocol oracle should produce stable evidence keys that can be used
2020
by reports, ranking, and regression tests.
2121

22+
Use `relayx evidence-report -r result.json` before promoting lab evidence. The
23+
report checks whether finding/path records carry evidence, protocol judgement
24+
fields, confidence, and remaining uncertainty in a consistent structure.
25+
2226
| Oracle | Required evidence keys |
2327
| --- | --- |
2428
| SMB | `smb_signing_required`, `smb_security_mode` |
@@ -52,6 +56,7 @@ relayx lab-matrix
5256
relayx lab-matrix --target-family mssql_epa --format json --out lab-matrix.json
5357
relayx lab-verify --corpus fixtures/lab_corpus --format json --out lab-verify.json
5458
relayx lab-stability --corpus fixtures/lab_corpus --min-captures 2 --format json --out lab-stability.json
59+
relayx lab-diff --corpus fixtures/lab_corpus --target-family http_iis_epa --format json --out lab-diff.json
5560
```
5661

5762
`lab-matrix` is the planning contract. `lab-verify` checks that a lab corpus
@@ -67,6 +72,12 @@ and explains why a promotion hint can be preserved or must be downgraded to
6772
coverage checks: one capture can prove that a matrix state exists, but repeated
6873
captures are needed before RelayX should treat a lab signature as stable.
6974

75+
`lab-diff` is the response-difference contract. It compares stable dominant
76+
signatures between policy states, separates response discriminator keys from
77+
context-only fields, and reports whether a policy-state pair can support
78+
calibration promotion. This is the offline corpus-level companion to
79+
`compare-baseline`, which compares two RelayX result files.
80+
7081
| ID | Service | Lab policy state | RelayX command mode | Expected behavior |
7182
| --- | --- | --- | --- | --- |
7283
| SMB-01 | SMB server | Signing disabled or not required | default scan | `smb_signing_required=false`; finding relay-ready/candidate through path engine |
@@ -117,6 +128,15 @@ Lab stability reports expose a separate confidence contract with evidence model
117128
promotion boundary, and auto-downgrade rule used when a corpus or generated
118129
profile attempts to preserve `promotion=promote` or `promotion=block`.
119130

131+
Lab differential reports expose evidence model `lab_response_differential`.
132+
They record stable changed keys, response discriminator keys, context-only
133+
keys, promotion support, and remaining uncertainty for each policy-state pair.
134+
135+
Evidence reports expose evidence model `result_evidence_completeness`. They are
136+
offline audits of an existing result and do not prove protocol correctness; they
137+
make missing judgement fields and unknown-confidence evidence visible before a
138+
lab profile or enterprise handoff relies on the result.
139+
120140
For baseline comparisons, promotion requires both:
121141

122142
1. A candidate signature that matches a promotable calibrated lab state.

docs/README.fr.md

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,17 @@ echec.
7676
modules via JSON manifest, credential policy guardrails, listener policy
7777
guardrails et adapter lifecycle auditable.
7878
- Validation versionnee des schemas et du contrat evidence pour resultats,
79-
profils lab, corpuses, execution records, module manifests, OpenGraph, JSONL
80-
CSV, OPSEC policy et route report.
79+
profils lab, corpuses, execution records, evidence reports, module manifests,
80+
OpenGraph, JSONL, CSV, OPSEC policy et route report.
8181
- Planification de standard lab matrix et verification de couverture corpus
8282
pour les etats HTTP/IIS EPA, AD CS Web Enrollment EPA, LDAP signing, LDAPS
8383
CBT et MSSQL encryption/EPA.
84+
- Analyse des lab response differentials pour comparer des signatures stables
85+
de policy states et separer les vrais response discriminators des champs de
86+
contexte.
87+
- Evidence completeness reporting pour auditer les records finding/path, les
88+
champs de protocol judgement, la distribution de confidence, les contract
89+
keys manquantes et l'incertitude restante.
8490
- Exports entreprise pour graph analysis, ingestion SIEM, revue CSV, rapports
8591
HTML/Markdown, scan diff et simulation d'impact de remediation.
8692
- Generation d'enterprise bundle avec manifest, hashes d'artefacts, schema
@@ -141,6 +147,7 @@ Examiner les chemins relay, decisions, controles et remediations :
141147
relayx paths result.json
142148
relayx routes --result result.json
143149
relayx calculus result.json
150+
relayx evidence-report --result result.json
144151
relayx controls result.json
145152
relayx fixes result.json
146153
relayx plan result.json PX-0001 --format json --out plan.json
@@ -210,8 +217,10 @@ relayx lab-matrix Affiche la standard lab policy matrix RelayX
210217
relayx lab-corpus Extrait des signatures lab depuis un resultat
211218
relayx lab-verify Verifie les corpuses lab contre la matrice standard
212219
relayx lab-stability Evalue stabilite et drift des captures lab repetees
220+
relayx lab-diff Compare les response differentials entre policy states
213221
relayx lab-index Resume les corpuses de signatures lab
214222
relayx lab-profile Genere un draft de calibration profile depuis corpus
223+
relayx evidence-report Audite evidence completeness et champs de judgement
215224
relayx validate Lance une validation active controlee pour un chemin
216225
relayx profiles Liste les profils RelayX integres
217226
relayx export Exporte graph, JSONL, CSV, rapport ou diagramme
@@ -295,10 +304,16 @@ relayx schema validate --kind module-manifest fixtures/execution_modules
295304
```
296305

297306
Les kinds supportes incluent `result`, `evidence`, `lab-profile`, `lab-corpus`,
298-
`lab-stability`, `execution-record`, `module-manifest`, `opsec-policy`,
299-
`route-report`, `bundle-manifest`, `quality-gate`, `opengraph`, `jsonl` et
300-
`csv`. Les rapports de validation expliquent les champs invalides par chemin et
301-
renvoient un exit code `2` lorsque l'artefact ne respecte pas le contrat choisi.
307+
`lab-stability`, `lab-differential`, `evidence-report`, `execution-record`,
308+
`module-manifest`, `opsec-policy`, `route-report`, `bundle-manifest`,
309+
`quality-gate`, `opengraph`, `jsonl` et `csv`. Les rapports de validation
310+
expliquent les champs invalides par chemin et renvoient un exit code `2`
311+
lorsque l'artefact ne respecte pas le contrat choisi.
312+
313+
`relayx evidence-report -r result.json` audite un resultat existant hors ligne,
314+
sans trafic reseau. Il signale les records candidate/relayable sans evidence,
315+
les protocol judgement records sans policy inference ou remaining uncertainty,
316+
et les evidence entries qui gardent une confidence `unknown`.
302317

303318
## Calibration laboratoire
304319

@@ -312,6 +327,7 @@ relayx compare-baseline --baseline epa-off.json --candidate epa-required.json --
312327
relayx lab-matrix --target-family mssql_epa --format json --out lab-matrix.json
313328
relayx lab-verify --corpus fixtures/lab_corpus --format json --out lab-verify.json
314329
relayx lab-stability --corpus fixtures/lab_corpus --min-captures 2 --format json --out lab-stability.json
330+
relayx lab-diff --corpus fixtures/lab_corpus --target-family http_iis_epa --format json --out lab-diff.json
315331
relayx lab-corpus result.json --label iis-epa-required --policy-state epa_required --expected-state epa_or_cbt_enforcement_signal --promotion promote --format json --out corpus.json
316332
relayx lab-profile --corpus corpus.json --profile-id http_iis_epa_lab --target-family http_iis_epa --service http --format json --out profile.json
317333
```
@@ -320,11 +336,14 @@ RelayX ne promeut une conclusion que lorsque le profil et la difference de
320336
baseline la justifient. Sinon, il conserve l'etat conservateur initial et
321337
explique les preuves encore manquantes.
322338

323-
`lab-matrix`, `lab-verify`, `lab-stability`, `lab-corpus` et `lab-profile`
324-
sont des aides de recherche hors ligne. Ils ne generent pas de trafic reseau;
325-
ils transforment des resultats RelayX deja captures en corpuses de signatures,
326-
verifient la couverture contre la matrice standard, mesurent la stabilite et le
327-
drift des captures repetees, et generent des drafts de profiles a reviser.
339+
`lab-matrix`, `lab-verify`, `lab-stability`, `lab-diff`, `lab-corpus` et
340+
`lab-profile` sont des aides de recherche hors ligne. Ils ne generent pas de
341+
trafic reseau; ils transforment des resultats RelayX deja captures en corpuses
342+
de signatures, verifient la couverture contre la matrice standard, mesurent la
343+
stabilite et le drift des captures repetees, comparent les response
344+
discriminators entre etats de politique stables, et generent des drafts de
345+
profiles a reviser. `lab-diff` travaille sur les etats stables d'un corpus;
346+
utilisez `compare-baseline` pour comparer deux fichiers resultat RelayX.
328347

329348
## Frontiere de securite
330349

0 commit comments

Comments
 (0)