up
Some checks failed
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Policy Simulation / policy-simulate (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled

This commit is contained in:
StellaOps Bot
2025-12-13 09:37:15 +02:00
parent e00f6365da
commit 6e45066e37
349 changed files with 17160 additions and 1867 deletions

View File

@@ -237,11 +237,83 @@ Slim wrapper used by CLI; returns 204 on success or `ERR_POL_001` payload.
Policy Engine evaluations may be enriched with reachability facts produced by Signals. These facts are expected to be:
- **Deterministic:** referenced by `metadata.fact.digest` (sha256) and versioned via `metadata.fact.version`.
- **Evidence-linked:** per-target states include `path[]` and `evidence.runtimeHits[]` (and any future CAS/DSSE pointers).
- **Evidence-linked:** per-target states include `path[]`, `evidence.static.graphHash`, `evidence.runtime.hitCount`, and CAS/DSSE pointers.
#### 6.0.1 Core Identifiers
| Identifier | Format | Description |
|------------|--------|-------------|
| `symbol_id` | `sym:{lang}:{base64url}` | Canonical function identity (SHA-256 of tuple) |
| `code_id` | `code:{lang}:{base64url}` | Identity for stripped/name-less code blocks |
| `graph_hash` | `blake3:{hex}` | Content-addressable graph identity |
| `fact.digest` | `sha256:{hex}` | Canonical reachability fact digest |
#### 6.0.2 Lattice States
Policy gates operate on the 8-state reachability lattice:
| State | Code | Policy Treatment |
|-------|------|------------------|
| `Unknown` | `U` | Block `not_affected`, allow `under_investigation` |
| `StaticallyReachable` | `SR` | Allow `affected`, block `not_affected` |
| `StaticallyUnreachable` | `SU` | Low-confidence `not_affected` allowed |
| `RuntimeObserved` | `RO` | `affected` required |
| `RuntimeUnobserved` | `RU` | Medium-confidence `not_affected` allowed |
| `ConfirmedReachable` | `CR` | `affected` required, `not_affected` blocked |
| `ConfirmedUnreachable` | `CU` | `not_affected` allowed |
| `Contested` | `X` | `under_investigation` required |
#### 6.0.3 Evidence Block Schema
When Policy findings include reachability evidence, the following structure is used:
```json
{
"reachability": {
"state": "CR",
"confidence": 0.92,
"evidence": {
"graph_hash": "blake3:a1b2c3d4e5f6...",
"graph_cas_uri": "cas://reachability/graphs/a1b2c3d4e5f6...",
"dsse_uri": "cas://reachability/graphs/a1b2c3d4e5f6....dsse",
"path": [
{"symbol_id": "sym:java:...", "code_id": "code:java:...", "display": "main()"},
{"symbol_id": "sym:java:...", "code_id": "code:java:...", "display": "Logger.error()"}
],
"path_length": 2,
"runtime_hits": 47,
"fact_digest": "sha256:abc123...",
"fact_version": 3
}
}
}
```
#### 6.0.4 Policy Rule Example
```rego
# Allow not_affected only for confirmed unreachable with high confidence
allow_not_affected {
input.reachability.state == "CU"
input.reachability.confidence >= 0.85
input.reachability.evidence.fact_digest != ""
}
# Require affected for confirmed reachable
require_affected {
input.reachability.state == "CR"
}
# Contested states require investigation
require_investigation {
input.reachability.state == "X"
}
```
Signals contract & scoring model:
- `docs/api/signals/reachability-contract.md`
- `docs/reachability/lattice.md`
- `docs/reachability/function-level-evidence.md`
### 6.1 Trigger Run