chore: Archive completed SPRINT_4400 implementations

Archive SPRINT_4400_0001_0001 (Signed Delta Verdict Attestation) and
SPRINT_4400_0001_0002 (Reachability Subgraph Attestation) as all tasks
are completed and verified.

Completed implementations:
- DeltaVerdictPredicate, DeltaVerdictStatement, DeltaVerdictBuilder
- DeltaVerdictOciPublisher with OCI referrer support
- CLI commands: delta compute --sign, delta verify, delta push
- ReachabilitySubgraph format with normalization
- ReachabilitySubgraphPredicate, ReachabilitySubgraphStatement
- ReachabilitySubgraphExtractor and ReachabilitySubgraphPublisher
- CLI: stella reachability show with DOT/Mermaid export
- Comprehensive integration tests for both features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
master
2025-12-23 10:56:38 +02:00
parent 541a936d03
commit 21337f4de6
2 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
# Sprint 4400_0001_0001 <20> Signed Delta Verdict Attestation
## Topic & Scope
- Create a signed attestation format for Smart-Diff deltas so semantic risk changes are portable, auditable, and verifiable.
- Moat thesis: "We explain what changed in exploitable surface area, not what changed in CVE count."
- **Working directory:** `src/Scanner/` (primary), `src/Attestor/`, `src/Cli/`.
- Evidence: delta verdict predicate + builder + OCI referrer push + CLI diff sign/verify + SARIF linkage + tests.
### Background
Smart-Diff (MaterialRiskChangeDetector) exists with R1-R4 rules and priority scoring. Gap: results are not attestable.
### Deliverables
#### D1: Delta Verdict Attestation Predicate
- Define `delta-verdict.stella/v1` predicate type.
- Include changes detected, priority score, evidence references.
#### D2: Delta Verdict Builder
- Build delta attestation from `MaterialRiskChangeResult`.
- Link to before/after proof spines.
- Include graph revision IDs.
#### D3: OCI Delta Push
- Push delta verdict as OCI referrer.
- Support linking to two image manifests (before/after).
#### D4: CLI Integration
- `stella diff --sign --push` flow.
- `stella diff verify` command.
### Acceptance Criteria
1. AC1: Delta verdict is a signed in-toto statement.
2. AC2: Delta can be pushed as OCI referrer.
3. AC3: `stella diff verify` validates signature and content.
4. AC4: Attestation links to both scan verdicts.
### Technical Notes
```json
{
"_type": "https://in-toto.io/Statement/v1",
"subject": [
{"digest": {"sha256": "<image-before>"}},
{"digest": {"sha256": "<image-after>"}}
],
"predicateType": "delta-verdict.stella/v1",
"predicate": {
"beforeRevisionId": "...",
"afterRevisionId": "...",
"hasMaterialChange": true,
"priorityScore": 1750,
"changes": [
{
"rule": "R1_ReachabilityFlip",
"findingKey": {"vulnId": "CVE-2024-1234", "purl": "..."},
"direction": "increased",
"reason": "Reachability changed from false to true"
}
],
"beforeVerdictDigest": "sha256:...",
"afterVerdictDigest": "sha256:...",
"comparedAt": "2025-12-22T00:00:00Z"
}
}
```
### Documentation Updates
- Add delta verdict to attestation catalog.
- Update Smart-Diff documentation.
## Dependencies & Concurrency
- Dependencies: MaterialRiskChangeDetector (exists), SPRINT_4300_0001_0001 (OCI referrer push foundation).
- Concurrency: No known conflicts in 44xx; safe to run in parallel with non-Scanner/Attestor/CLI changes.
## Documentation Prerequisites
- `docs/README.md`
- `docs/07_HIGH_LEVEL_ARCHITECTURE.md`
- `docs/modules/platform/architecture-overview.md`
- `docs/modules/scanner/architecture.md`
- `docs/modules/attestor/architecture.md`
- `docs/modules/cli/architecture.md`
- `docs/product-advisories/14-Dec-2025 - Smart-Diff Technical Reference.md`
## Delivery Tracker
| # | Task ID | Status | Key dependency / next step | Owners | Task Definition |
| --- | --- | --- | --- | --- | --- |
| 1 | DELTA-001 | DONE | Predicate schema + statement location | Attestor Guild | Define `DeltaVerdictStatement` predicate. |
| 2 | DELTA-002 | DONE | DELTA-001 | Scanner Guild | Create `DeltaVerdictBuilder`. |
| 3 | DELTA-003 | DONE | Proof spine access | Scanner Guild | Implement before/after proof spine linking. |
| 4 | DELTA-004 | DONE | OCI referrer push foundation | Scanner Guild | Add delta verdict to OCI pusher. |
| 5 | DELTA-005 | DONE | DELTA-002 | CLI Guild | Implement `stella diff --sign`. |
| 6 | DELTA-006 | DONE | DELTA-005 | CLI Guild | Implement `stella diff verify`. |
| 7 | DELTA-007 | DONE | DELTA-002 | Scanner Guild | Add SARIF output with attestation reference. |
| 8 | DELTA-008 | DONE | All above | QA Guild | Integration tests. |
## Execution Log
| Date (UTC) | Update | Owner |
| --- | --- | --- |
| 2025-12-22 | Sprint created; awaiting staffing. | Planning |
| 2025-12-22 | Normalized sprint file to standard template; no semantic changes. | Planning |
| 2025-12-22 | DELTA-001 through DELTA-007 completed. Implemented: DeltaVerdictPredicate, DeltaVerdictStatement, DeltaVerdictBuilder, DeltaVerdictOciPublisher, CLI verify/push commands, SARIF attestation reference support. Fixed pre-existing bug in DeltaSigningService. | Implementation |
| 2025-12-22 | DELTA-008 completed. Added integration tests in DeltaVerdictAttestationTests.cs covering build/sign, verify, OCI attachment, serialization round-trip, and predicate validation. | Implementation |
## Decisions & Risks
- DELTA-004 depends on OCI referrer push foundations (SPRINT_4300_0001_0001); if unavailable, delta push is blocked.
- Proof spine linking requires accessible before/after spines; fall back to optional links if not available.
## Next Checkpoints
- TBD

View File

@@ -0,0 +1,109 @@
# Sprint 4400_0001_0002 <20> Reachability Subgraph Attestation
## Topic & Scope
- Package reachability analysis results as a standalone, attestable subgraph artifact that can be stored, transferred, and verified without the full scan context.
- Moat thesis: "We provide proof of exploitability in this artifact, not just a badge."
- **Working directory:** `src/Signals/` (primary), `src/Scanner/`, `src/Attestor/`.
- Evidence: subgraph format + predicate + extractor + OCI push + CLI viewer + tests.
### Background
Current implementation has `ReachabilityWitnessStatement` for single path witness, `PathWitnessBuilder` for call path construction, and `CallPath` models. Gap: no standalone reachability subgraph as a portable artifact.
### Deliverables
#### D1: Reachability Subgraph Format
- Define graph serialization format (nodes, edges, metadata).
- Include entrypoints, symbols, call edges, gates.
- Support partial graphs (per finding).
#### D2: Subgraph Attestation Predicate
- Define `reachability-subgraph.stella/v1` predicate.
- Include graph digest, finding keys covered, analysis metadata.
#### D3: Subgraph Builder
- Extract relevant subgraph from full call graph.
- Prune to reachable paths only.
- Include boundary detection results.
#### D4: OCI Subgraph Push
- Push subgraph as OCI artifact.
- Link to SBOM and verdict.
#### D5: Subgraph Viewer
- CLI command to inspect subgraph.
- Visualize call paths to vulnerable symbols.
### Acceptance Criteria
1. AC1: Subgraph captures all paths to vulnerable symbols.
2. AC2: Subgraph is a signed attestation.
3. AC3: Subgraph can be pushed as OCI artifact.
4. AC4: CLI can visualize subgraph.
### Technical Notes
```json
{
"version": "1.0",
"findingKeys": ["CVE-2024-1234@pkg:npm/lodash@4.17.20"],
"nodes": [
{"id": "n1", "type": "entrypoint", "symbol": "main.handler"},
{"id": "n2", "type": "call", "symbol": "lodash.merge"},
{"id": "n3", "type": "vulnerable", "symbol": "lodash._baseAssign"}
],
"edges": [
{"from": "n1", "to": "n2", "type": "call"},
{"from": "n2", "to": "n3", "type": "call"}
],
"gates": [
{"nodeId": "n1", "gateType": "http", "boundary": "public"}
],
"analysisMetadata": {
"analyzer": "node-callgraph-v2",
"confidence": 0.95,
"completeness": "partial"
}
}
```
### Documentation Updates
- Add reachability subgraph specification.
- Update attestation type catalog.
- Create reachability proof guide.
## Dependencies & Concurrency
- Dependencies: ReachabilityWitnessStatement (exists), CallPath (exists).
- Concurrency: No known conflicts in 44xx; safe to run in parallel with non-Signals/Scanner/Attestor changes.
## Documentation Prerequisites
- `docs/README.md`
- `docs/07_HIGH_LEVEL_ARCHITECTURE.md`
- `docs/modules/platform/architecture-overview.md`
- `docs/modules/scanner/architecture.md`
- `docs/modules/attestor/architecture.md`
- `docs/modules/signals/unknowns/2025-12-01-unknowns-registry.md`
- `docs/reachability/DELIVERY_GUIDE.md`
## Delivery Tracker
| # | Task ID | Status | Key dependency / next step | Owners | Task Definition |
| --- | --- | --- | --- | --- | --- |
| 1 | SUBG-001 | DONE | Subgraph schema draft | Scanner Guild | Define `ReachabilitySubgraph` serialization format. |
| 2 | SUBG-002 | DONE | SUBG-001 | Attestor Guild | Create `ReachabilitySubgraphStatement` predicate. |
| 3 | SUBG-003 | DONE | Call graph access | Scanner Guild | Implement `SubgraphExtractor` from call graph. |
| 4 | SUBG-004 | DONE | SUBG-002 + SUBG-003 | Scanner Guild | Add subgraph to attestation pipeline. |
| 5 | SUBG-005 | DONE | OCI referrer push foundation | Scanner Guild | Implement OCI subgraph push. |
| 6 | SUBG-006 | DONE | SUBG-001 | CLI Guild | Create `stella reachability show` command. |
| 7 | SUBG-007 | DONE | SUBG-006 | CLI Guild | Add DOT/Mermaid export for visualization. |
| 8 | SUBG-008 | DONE | All above | QA Guild | Integration tests with real call graphs. |
## Execution Log
| Date (UTC) | Update | Owner |
| --- | --- | --- |
| 2025-12-22 | Sprint created; awaiting staffing. | Planning |
| 2025-12-22 | Normalized sprint file to standard template; no semantic changes. | Planning |
| 2025-12-22 | SUBG-001 through SUBG-007 completed. Implemented: ReachabilitySubgraph serialization format with normalizer, ReachabilitySubgraphPredicate, ReachabilitySubgraphStatement, ReachabilitySubgraphExtractor, ReachabilitySubgraphPublisher (CAS + attestation), CLI `stella reachability show` command, DOT/Mermaid export. | Implementation |
| 2025-12-22 | SUBG-008 completed. Added integration tests in ReachabilitySubgraphAttestationTests.cs covering subgraph structure, normalization, serialization, DOT/Mermaid export, and analysis metadata validation. | Implementation |
## Decisions & Risks
- OCI referrer support varies by registry; ensure fallback paths or clear error messages for SUBG-005.
- Large subgraphs may impact push size; consider pruning defaults and deterministic ordering.
## Next Checkpoints
- TBD