new advisories work and features gaps work
This commit is contained in:
@@ -74,6 +74,34 @@ public sealed record RuntimeCallEvent
|
||||
/// UTC timestamp when this event was received by the collector.
|
||||
/// </summary>
|
||||
public DateTimeOffset ReceivedAt { get; init; } = DateTimeOffset.UtcNow;
|
||||
|
||||
// --- Sprint: SPRINT_20260112_005_SIGNALS_runtime_nodehash (PW-SIG-001) ---
|
||||
|
||||
/// <summary>
|
||||
/// Fully qualified function signature (namespace.type.method(params)).
|
||||
/// </summary>
|
||||
public string? FunctionSignature { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// SHA256 digest of the binary containing this function.
|
||||
/// </summary>
|
||||
public string? BinaryDigest { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Offset within the binary where the function is located.
|
||||
/// </summary>
|
||||
public ulong? BinaryOffset { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Canonical node hash (sha256:hex) for static/runtime evidence joining.
|
||||
/// Computed using NodeHashRecipe from PURL + FunctionSignature.
|
||||
/// </summary>
|
||||
public string? NodeHash { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// SHA256 hash of the callstack for deterministic aggregation.
|
||||
/// </summary>
|
||||
public string? CallstackHash { get; init; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -141,6 +169,38 @@ public sealed record ObservedCallPath
|
||||
/// Last observation timestamp.
|
||||
/// </summary>
|
||||
public DateTimeOffset LastObservedAt { get; init; }
|
||||
|
||||
// --- Sprint: SPRINT_20260112_005_SIGNALS_runtime_nodehash (PW-SIG-001) ---
|
||||
|
||||
/// <summary>
|
||||
/// Canonical node hashes for each symbol in the path (deterministic order).
|
||||
/// </summary>
|
||||
public IReadOnlyList<string>? NodeHashes { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Canonical path hash (sha256:hex) computed from ordered node hashes.
|
||||
/// </summary>
|
||||
public string? PathHash { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Callstack hash for efficient deduplication.
|
||||
/// </summary>
|
||||
public string? CallstackHash { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Function signatures for each symbol in the path.
|
||||
/// </summary>
|
||||
public IReadOnlyList<string>? FunctionSignatures { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Binary digests for each symbol in the path (null if not resolvable).
|
||||
/// </summary>
|
||||
public IReadOnlyList<string?>? BinaryDigests { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Binary offsets for each symbol in the path (null if not resolvable).
|
||||
/// </summary>
|
||||
public IReadOnlyList<ulong?>? BinaryOffsets { get; init; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -187,6 +247,23 @@ public sealed record RuntimeSignalSummary
|
||||
/// Runtime types detected in this container.
|
||||
/// </summary>
|
||||
public IReadOnlyList<RuntimeType> DetectedRuntimes { get; init; } = [];
|
||||
|
||||
// --- Sprint: SPRINT_20260112_005_SIGNALS_runtime_nodehash (PW-SIG-004) ---
|
||||
|
||||
/// <summary>
|
||||
/// Unique node hashes observed in this summary (deterministic sorted order).
|
||||
/// </summary>
|
||||
public IReadOnlyList<string>? ObservedNodeHashes { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Unique path hashes for all observed call paths (deterministic sorted order).
|
||||
/// </summary>
|
||||
public IReadOnlyList<string>? ObservedPathHashes { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Combined hash of all observed paths for summary-level identity.
|
||||
/// </summary>
|
||||
public string? CombinedPathHash { get; init; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user