Skip to content

Commit 980bad6

Browse files
committed
Release RelayX v0.1.14 engineering quality
1 parent 1b56e1d commit 980bad6

51 files changed

Lines changed: 3375 additions & 239 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ telemetry.
5858
awareness, noise filtering, blockers, fixes, and OPSEC notes.
5959
- Route/Pivot Awareness for source sessions, segments, subnets, structured
6060
`route_hops`, Ligolo, Sliver P2P, SOCKS, tun2socks, port forwarding, hop
61-
count, reachability state, and route risk scoring.
61+
count, reachability state, route risk scoring, and optional authorized direct
62+
TCP reachability checks that do not open pivot sessions.
6263
- Relay decision calculus with rule IDs, target families, preconditions,
6364
hardening gates, defensive controls, and remediation priorities.
6465
- Lab calibration profiles for HTTP/IIS EPA, AD CS Web Enrollment EPA, LDAP
@@ -86,10 +87,15 @@ telemetry.
8687
- OPSEC policy evaluation for validation, execution, and source planning,
8788
including noise ceilings, scope requirements, confirmed-mode context,
8889
network-action boundaries, expected telemetry, and rollback checks.
90+
- Operation controls for assessment and validation, including rate limits,
91+
delay, jitter, scheduled operation windows, listener/callback scope contracts,
92+
and machine-clean output preservation.
8993
- Execution module inventory, compatibility planning, and Adapter SDK
9094
dispatch, including built-in offline audit recording, JSON manifest-backed
9195
module definitions, credential policy guardrails, listener policy guardrails,
92-
and audited adapter lifecycle records.
96+
lab-only adapter fixtures that hard-fail in confirmed mode,
97+
one-shot/timeout/evidence-capture contracts, and audited adapter lifecycle
98+
records.
9399
- Versioned schema and evidence contract validation for result files, lab
94100
profiles, corpuses, lab stability and differential reports, execution
95101
records, evidence reports, module manifests, OpenGraph, JSONL, CSV, OPSEC
@@ -152,6 +158,7 @@ Review relay paths, decisions, controls, and remediation:
152158
```bash
153159
relayx paths result.json
154160
relayx routes --result result.json
161+
relayx routes --result result.json --target-protocol ldap --connect-check --rate-limit 60 --format json --out relayx-routes.json
155162
relayx calculus result.json
156163
relayx evidence-report --result result.json
157164
relayx controls result.json
@@ -163,8 +170,8 @@ Run guarded validation or offline execution recording:
163170

164171
```bash
165172
relayx validate --result result.json --path-id PX-0001 --mode dry-run
166-
relayx validate --result result.json --path-id PX-0001 --mode confirmed --confirm --operator redpen --reason "authorized target reprobe" --audit-log audit.jsonl --reprobe
167-
relayx run --result result.json --path-id PX-0001 --module relayx_audit_record --mode confirmed --confirm --operator redpen --reason "authorized offline audit record" --audit-log audit.jsonl
173+
relayx validate --result result.json --path-id PX-0001 --mode confirmed --confirm --operator redpen --reason "authorized target reprobe" --audit-log audit.jsonl --scope filesrv01 --reprobe --stop-before 2030-01-01T18:00:00+08:00
174+
relayx run --result result.json --path-id PX-0001 --module relayx_audit_record --mode confirmed --confirm --operator redpen --reason "authorized offline audit record" --audit-log audit.jsonl --scope filesrv01
168175
```
169176

170177
Export enterprise artifacts:
@@ -201,6 +208,8 @@ relayx -q bundle -r examples/tutorial/sample-result.json -d /tmp/relayx-tutorial
201208

202209
Read the full runbook in [docs/TUTORIAL.md](docs/TUTORIAL.md). The tutorial
203210
fixtures live in [examples/tutorial](examples/tutorial).
211+
Authorized AD/IIS/AD CS/MSSQL lab expectations are documented in
212+
[docs/INTEGRATION_TESTS.md](docs/INTEGRATION_TESTS.md).
204213

205214
## Command Reference
206215

@@ -287,11 +296,15 @@ guardrails.
287296

288297
- `json`: full RelayX result or command output for automation.
289298
- `markdown` / `html`: assessment reports for operators and stakeholders.
299+
HTML reports include offline filters for status, severity, protocol, source
300+
capability, target family, defensive control, and free-text review.
290301
- `mermaid`: lightweight path diagrams.
291-
- `csv`: spreadsheet-oriented finding and path review.
292-
- `jsonl`: one event per line for SIEM and blue-team pipelines.
302+
- `csv`: spreadsheet-oriented finding and path review with a stable field
303+
contract.
304+
- `jsonl`: one event per line for SIEM and blue-team pipelines, including
305+
stable event IDs and field contract versions.
293306
- `opengraph`: custom BloodHound/OpenGraph-style graph with RelayX node and
294-
edge kinds.
307+
edge kinds, in-artifact mapping, deterministic edge IDs, and control nodes.
295308
- `bundle-manifest`: validated enterprise bundle manifest with hashes and
296309
schema status.
297310
- `quality-gate`: CI and release gate report for package, fixture, docs, and
@@ -314,6 +327,12 @@ Supported kinds include `result`, `evidence`, `lab-profile`, `lab-corpus`,
314327
Validation reports explain invalid fields by path and return exit code `2` when
315328
an artifact does not satisfy the selected contract.
316329

330+
`relayx diff` reports added, removed, and changed paths plus exposure trend,
331+
score delta, control trends, remediation regressions, and remediation
332+
improvements. `relayx simulate-fixes` reports affected paths, control
333+
dependencies, remaining controls, remaining target families, and estimated
334+
residual exposure.
335+
317336
`relayx evidence-report -r result.json` audits an existing result without
318337
network activity. It highlights candidate or relayable records without
319338
evidence, protocol judgement records missing policy inference or remaining
@@ -360,8 +379,9 @@ coercion. `--auth-validation` sends synthetic NTLM authenticate messages with
360379
placeholder credentials and can create failed authentication telemetry.
361380

362381
Confirmed validation and execution require operator identity, reason,
363-
confirmation, and audit logging. The built-in supported execution adapter is
364-
offline audit recording only. Execution is dispatched through the RelayX
382+
confirmation, and audit logging; confirmed execution also requires explicit
383+
scope. The built-in supported execution adapter is offline audit recording only.
384+
Execution is dispatched through the RelayX
365385
Adapter SDK, which blocks unregistered adapters, unsafe credential policies,
366386
unsafe listener policies, and inconsistent manifest support declarations. Live
367387
relay adapters are not enabled by default.

docs/CLI.md

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ for workflows, examples, exports, and safety boundaries.
66
For a complete end-to-end offline walkthrough, use
77
[`docs/TUTORIAL.md`](TUTORIAL.md) with the fixtures in
88
[`examples/tutorial`](../examples/tutorial).
9+
Authorized AD/IIS/AD CS/MSSQL integration-test expectations are documented in
10+
[`docs/INTEGRATION_TESTS.md`](INTEGRATION_TESTS.md).
911

1012
## Quick Help
1113

@@ -63,6 +65,11 @@ Common aliases:
6365
-S, --scope Scope input
6466
-q, --no-banner Suppress human-readable banner output
6567
-V, --version Print RelayX version
68+
-Q, --rate-limit Maximum active starts per minute where supported
69+
-D, --delay Minimum delay between active starts
70+
-J, --jitter Random delay added to active start spacing
71+
-U, --start-after ISO-8601 operation window start
72+
-Z, --stop-before ISO-8601 operation window end
6673
```
6774

6875
Safety and execution aliases:
@@ -75,6 +82,8 @@ Safety and execution aliases:
7582
-R, --reason Authorization or operational reason
7683
-A, --audit-log JSONL audit log path
7784
-P, --opsec-policy Built-in policy name or external policy JSON
85+
-L, --listener-host Planned listener host for scope checks
86+
-K, --callback-host Planned callback host for scope checks
7887
```
7988

8089
Use `relayx help short-options` for the complete alias map. Short aliases do not
@@ -86,14 +95,32 @@ confirmation, operator, reason, scope where required, and audit logging.
8695
```bash
8796
relayx routes --sources examples/sources.json --targets examples/targets.txt
8897
relayx routes -r result.json -f json -o relayx-routes.json
98+
relayx routes -s examples/sources.json -t examples/targets.txt -P ldap --connect-check --rate-limit 60 -f json -o relayx-routes.json
8999
```
90100

91-
Route awareness is model-driven. RelayX does not open pivot sessions or test
92-
live reachability from the operator host. Source profiles can provide
101+
Route awareness is model-driven by default. With `--connect-check`, RelayX runs
102+
authorized direct TCP checks from the operator runtime only; it does not open,
103+
prove, or operate pivot sessions. Source profiles can provide
93104
`session`, `segment`, `subnets`, free-form `routes`, and structured
94105
`route_hops`. Structured routes produce stronger reachability evidence than
95106
unconstrained labels.
96107

108+
## Operation Controls
109+
110+
`scan`, `assess`, `routes --connect-check`, and `validate` accept operation
111+
controls for controlled assessment windows:
112+
113+
```bash
114+
relayx scan -t examples/targets.txt -o result.json --rate-limit 120 --stop-before 2030-01-01T18:00:00+08:00
115+
relayx validate -r result.json -p PX-0001 -m confirmed -y -O redpen -R "authorized target reprobe" -A audit.jsonl -e --start-after 2030-01-01T14:00:00+08:00 --stop-before 2030-01-01T18:00:00+08:00
116+
```
117+
118+
`--rate-limit` controls operation starts per minute. `--delay` sets a minimum
119+
spacing between starts, and `--jitter` adds randomized delay. `--start-after`
120+
and `--stop-before` use ISO-8601 timestamps; naive timestamps are interpreted
121+
in the local timezone. Confirmed validation reprobes fail closed outside the
122+
window, while dry-run validation records the same window as a warning.
123+
97124
## Evidence Report
98125

99126
```bash
@@ -151,6 +178,17 @@ In `relayx bundle`, `-f/--format` controls the manifest summary printed by the
151178
command, while `-F/--formats` controls which artifacts are written into the
152179
bundle.
153180

181+
`relayx export -f opengraph` includes node/edge mappings, deterministic edge
182+
IDs, and RelayX control nodes. `relayx export -f jsonl` and `relayx export -f
183+
csv` use stable field contracts for SIEM and spreadsheet ingestion. HTML
184+
reports include offline filters for status, severity, protocol, source
185+
capability, target family, defensive control, and free text.
186+
187+
`relayx diff` reports exposure trend, score delta, control trends, remediation
188+
regressions, and remediation improvements. `relayx simulate-fixes` reports
189+
control dependencies and estimated residual exposure in addition to affected
190+
paths and score reduction.
191+
154192
## Validation And Execution Modes
155193

156194
`dry-run` explains guardrails and expected telemetry without performing an
@@ -163,6 +201,10 @@ context.
163201
can create failed-logon telemetry. Use it only in explicitly authorized lab or
164202
assessment windows.
165203

204+
`source-plan` and `run` accept `--listener-host` and `--callback-host` as
205+
planning inputs for stricter scope contracts. Supplying these values does not
206+
start listeners or callbacks; it records and checks the intended boundaries.
207+
166208
## Lab Matrix And Corpus Verification
167209

168210
```bash
@@ -210,7 +252,9 @@ not silently produce an empty pass report.
210252
`relayx modules` and `relayx module-plan` expose both module manifests and the
211253
registered Adapter SDK contract. Confirmed execution is blocked unless the
212254
adapter is registered, credential policy is allowed, listener policy is allowed,
213-
and the module support declaration is consistent with the adapter boundary.
255+
the module support declaration is consistent with the adapter boundary, and
256+
explicit scope is supplied. Lab-only module fixtures may describe future live
257+
adapter contracts, but they are not registered live execution modules.
214258

215259
## Help Content
216260

docs/ENTERPRISE_OUTPUTS.md

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,25 @@ with `graph.nodes` and `graph.edges`. RelayX uses custom kinds such as
3434
`RelayXScan`, `RelayXSource`, `RelayXTargetService`, and `RelayXPath` so that
3535
relay readiness context does not collide with AD or Azure entity kinds.
3636

37+
The export includes `metadata.field_contract_version` and a `mapping` object.
38+
`mapping.node_kinds` and `mapping.edge_kinds` document the RelayX node and edge
39+
contract inside the artifact itself. Edges carry deterministic IDs so graph
40+
imports, repeat exports, and scan diffs can reason about stable relationships.
41+
42+
Current custom node kinds include:
43+
44+
- `RelayXScan`
45+
- `RelayXSource`
46+
- `RelayXTarget`
47+
- `RelayXTargetService`
48+
- `RelayXFinding`
49+
- `RelayXPath`
50+
- `RelayXControl`
51+
52+
Current custom edge kinds include path ownership, source/target relationships,
53+
candidate relay relationships, and `RelayXPathMitigatedBy` edges from paths to
54+
defensive controls.
55+
3756
## JSONL
3857

3958
`--format jsonl` emits one event per line:
@@ -46,6 +65,36 @@ relay readiness context does not collide with AD or Azure entity kinds.
4665

4766
This is the preferred format for SIEM and blue-team pipelines.
4867

68+
Every event includes `event_type`, `event_id`, `schema_version`, and
69+
`field_contract_version`. Path events keep stable judgement and routing fields
70+
such as `rule_id`, `decision`, `target_family`, `source_capability`,
71+
`control_keys`, `route_state`, `route_risk_level`, and
72+
`remaining_uncertainty`.
73+
74+
## CSV
75+
76+
`--format csv` emits one table with `finding` and `path` rows. The header is the
77+
field contract. It includes stable SIEM/spreadsheet fields for host, protocol,
78+
status, score, impact, source, target service, calculus decision, target
79+
family, source capability, defensive controls, route risk, blockers, fixes,
80+
remaining uncertainty, and `field_contract_version`.
81+
82+
## HTML Reports
83+
84+
HTML reports are designed to work as offline bundle artifacts. The path table
85+
includes filters for:
86+
87+
- free text
88+
- status
89+
- severity
90+
- protocol
91+
- source capability
92+
- target family
93+
- defensive control
94+
95+
The filters operate on row `data-*` attributes, so the visible table and the
96+
underlying path metadata remain aligned when the report is archived.
97+
4998
## Enterprise Bundle
5099

51100
`relayx bundle` writes a complete handoff directory from one result file. The
@@ -65,8 +114,10 @@ relayx schema validate -k bundle-manifest relayx-bundle/manifest.json
65114

66115
`relayx routes` emits a route and pivot awareness report. It records modeled
67116
source-to-target reachability, route state, pivot types, hop count, route risk,
68-
and remaining uncertainty. Route reports are offline model artifacts; they do
69-
not open pivot sessions or perform live reachability checks.
117+
and remaining uncertainty. Route reports are offline model artifacts by
118+
default. With `--connect-check`, they can include authorized direct TCP
119+
reachability observations from the operator runtime; this still does not open,
120+
prove, or operate pivot sessions.
70121

71122
## Schema Validation
72123

@@ -113,8 +164,19 @@ It reports added, removed, and changed paths, plus finding additions/removals an
113164
score movement. Path changes include protocol oracle subclassification and
114165
route risk changes when those fields are present.
115166

167+
Diff output also reports `exposure_trend`, `score_delta`, `control_trends`,
168+
`remediation_regressions`, and `remediation_improvements`. This makes repeated
169+
scans usable as a remediation trend record rather than only a path inventory
170+
comparison.
171+
116172
## Remediation Simulation
117173

118174
`relayx simulate-fixes` calculates the path and score reduction if matching
119175
fixes or RelayX controls are treated as implemented. It does not mutate the
120176
input result file.
177+
178+
Simulation output is an estimate. It records affected paths, score reduction,
179+
control dependencies, remaining controls, remaining target families, and
180+
estimated residual exposure. Dependency records are intentionally conservative:
181+
they show which related controls still appear on remaining paths, not proof that
182+
those controls have been implemented or bypassed.

docs/INSTALL.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ relayx --version
3232
1. Update `relayx.__version__` and `pyproject.toml`.
3333
2. Run the full unit test suite.
3434
3. Run the RelayX quality gate.
35-
4. Build a wheel and source distribution.
36-
5. Smoke-test the generated wheel.
37-
6. Tag the release in GitHub.
35+
4. Review [`docs/INTEGRATION_TESTS.md`](INTEGRATION_TESTS.md) when lab fixtures
36+
or protocol classifications changed.
37+
5. Build a wheel and source distribution.
38+
6. Smoke-test the generated wheel.
39+
7. Tag the release in GitHub.
3840

3941
```bash
4042
python3 -m unittest discover -s tests

0 commit comments

Comments
 (0)