semi implemented and features implemented save checkpoint

This commit is contained in:
master
2026-02-08 18:00:49 +02:00
parent 04360dff63
commit 1bf6bbf395
20895 changed files with 716795 additions and 64 deletions

View File

@@ -0,0 +1,29 @@
# Edge-Level Attestations (DSSE-signed per dependency edge)
## Module
Attestor
## Status
IMPLEMENTED
## Description
Proof graph edge models with typed edges and a rich graph attestation service in Scanner for emitting per-edge attestation data.
## Implementation Details
- **Proof Graph Edge**: `src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Graph/ProofGraphEdge.cs` -- edge model with content-addressed ID, source/target node references, and typed semantics.
- **Edge Types**: `ProofGraphEdgeType.cs` -- enum defining edge types: DependsOn, Supersedes, Aggregates, Produces, Consumes, etc.
- **Proof Graph Node**: `ProofGraphNode.cs` -- node model with `ProofGraphNodeType`.
- **Graph Service**: `InMemoryProofGraphService.cs` (with `.Mutation`, `.Queries`, `.Subgraph`) -- manages graph with per-edge operations.
- **Content-Addressed Edge IDs**: `Identifiers/ContentAddressedIdGenerator.Graph.cs` -- generates edge IDs from source+target+type content.
- **Graph Root Attestation**: `src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/GraphRootAttestor.cs` -- attests graph root including all edges.
- **DSSE Signing**: Per-edge attestations are signed via `ProofChainSigner`.
- **Note**: Scanner module (`src/Scanner/`) contains the graph attestation service that emits per-edge data; Attestor provides the models and signing.
## E2E Test Plan
- [ ] Add a DependsOn edge between two nodes via `InMemoryProofGraphService.Mutation` and verify edge ID is generated
- [ ] Add edges of different types (Supersedes, Aggregates, Produces) and verify each gets a unique typed edge ID
- [ ] Query edges by type via `InMemoryProofGraphService.Queries` and verify correct filtering
- [ ] Sign an edge attestation via `ProofChainSigner` and verify the DSSE envelope
- [ ] Attest the full graph root via `GraphRootAttestor` and verify it includes edge count and types
- [ ] Remove a node and verify all connected edges are cleaned up
- [ ] Extract a subgraph and verify only edges within the subgraph are included