up
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
This commit is contained in:
@@ -291,6 +291,90 @@ public static class PolicyEngineTelemetry
|
||||
/// </summary>
|
||||
public static Counter<long> ProfileEventsPublished => ProfileEventsPublishedCounter;
|
||||
|
||||
// Counter: policy_events_processed_total
|
||||
private static readonly Counter<long> PolicyEventsProcessedCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_events_processed_total",
|
||||
unit: "events",
|
||||
description: "Total policy change events processed.");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for policy change events processed.
|
||||
/// </summary>
|
||||
public static Counter<long> PolicyEventsProcessed => PolicyEventsProcessedCounter;
|
||||
|
||||
// Counter: policy_effective_events_published_total
|
||||
private static readonly Counter<long> PolicyEffectiveEventsPublishedCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_effective_events_published_total",
|
||||
unit: "events",
|
||||
description: "Total policy.effective.* events published.");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for policy effective events published.
|
||||
/// </summary>
|
||||
public static Counter<long> PolicyEffectiveEventsPublished => PolicyEffectiveEventsPublishedCounter;
|
||||
|
||||
// Counter: policy_reevaluation_jobs_scheduled_total
|
||||
private static readonly Counter<long> ReEvaluationJobsScheduledCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_reevaluation_jobs_scheduled_total",
|
||||
unit: "jobs",
|
||||
description: "Total re-evaluation jobs scheduled.");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for re-evaluation jobs scheduled.
|
||||
/// </summary>
|
||||
public static Counter<long> ReEvaluationJobsScheduled => ReEvaluationJobsScheduledCounter;
|
||||
|
||||
// Counter: policy_explain_traces_stored_total
|
||||
private static readonly Counter<long> ExplainTracesStoredCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_explain_traces_stored_total",
|
||||
unit: "traces",
|
||||
description: "Total explain traces stored for decision audit.");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for explain traces stored.
|
||||
/// </summary>
|
||||
public static Counter<long> ExplainTracesStored => ExplainTracesStoredCounter;
|
||||
|
||||
// Counter: policy_effective_decision_map_operations_total
|
||||
private static readonly Counter<long> EffectiveDecisionMapOperationsCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_effective_decision_map_operations_total",
|
||||
unit: "operations",
|
||||
description: "Total effective decision map operations (set, get, invalidate).");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for effective decision map operations.
|
||||
/// </summary>
|
||||
public static Counter<long> EffectiveDecisionMapOperations => EffectiveDecisionMapOperationsCounter;
|
||||
|
||||
// Counter: policy_exception_operations_total{tenant,operation}
|
||||
private static readonly Counter<long> ExceptionOperationsCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_exception_operations_total",
|
||||
unit: "operations",
|
||||
description: "Total policy exception operations (create, update, revoke, review_*).");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for policy exception operations.
|
||||
/// </summary>
|
||||
public static Counter<long> ExceptionOperations => ExceptionOperationsCounter;
|
||||
|
||||
// Counter: policy_exception_cache_operations_total{tenant,operation}
|
||||
private static readonly Counter<long> ExceptionCacheOperationsCounter =
|
||||
Meter.CreateCounter<long>(
|
||||
"policy_exception_cache_operations_total",
|
||||
unit: "operations",
|
||||
description: "Total exception cache operations (hit, miss, set, warm, invalidate).");
|
||||
|
||||
/// <summary>
|
||||
/// Counter for exception cache operations.
|
||||
/// </summary>
|
||||
public static Counter<long> ExceptionCacheOperations => ExceptionCacheOperationsCounter;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Reachability Metrics
|
||||
@@ -506,6 +590,38 @@ public static class PolicyEngineTelemetry
|
||||
PolicySimulationCounter.Add(1, tags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Records a policy exception operation.
|
||||
/// </summary>
|
||||
/// <param name="tenant">Tenant identifier.</param>
|
||||
/// <param name="operation">Operation type (create, update, revoke, review_create, review_decision_*, etc.).</param>
|
||||
public static void RecordExceptionOperation(string tenant, string operation)
|
||||
{
|
||||
var tags = new TagList
|
||||
{
|
||||
{ "tenant", NormalizeTenant(tenant) },
|
||||
{ "operation", NormalizeTag(operation) },
|
||||
};
|
||||
|
||||
ExceptionOperationsCounter.Add(1, tags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Records an exception cache operation.
|
||||
/// </summary>
|
||||
/// <param name="tenant">Tenant identifier.</param>
|
||||
/// <param name="operation">Operation type (hit, miss, set, warm, invalidate_*, event_*).</param>
|
||||
public static void RecordExceptionCacheOperation(string tenant, string operation)
|
||||
{
|
||||
var tags = new TagList
|
||||
{
|
||||
{ "tenant", NormalizeTenant(tenant) },
|
||||
{ "operation", NormalizeTag(operation) },
|
||||
};
|
||||
|
||||
ExceptionCacheOperationsCounter.Add(1, tags);
|
||||
}
|
||||
|
||||
#region Golden Signals - Recording Methods
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -127,7 +127,7 @@ public sealed class PolicyEvaluationPredicate
|
||||
/// Environment information.
|
||||
/// </summary>
|
||||
[JsonPropertyName("environment")]
|
||||
public required PolicyEvaluationEnvironment Environment { get; init; }
|
||||
public required AttestationEnvironment Environment { get; init; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -167,9 +167,9 @@ public sealed class PolicyEvaluationMetrics
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Environment information for the evaluation.
|
||||
/// Environment information for the attestation.
|
||||
/// </summary>
|
||||
public sealed class PolicyEvaluationEnvironment
|
||||
public sealed class AttestationEnvironment
|
||||
{
|
||||
[JsonPropertyName("serviceVersion")]
|
||||
public required string ServiceVersion { get; init; }
|
||||
@@ -243,7 +243,7 @@ public sealed class PolicyEvaluationAttestationService
|
||||
VexOverridesApplied = vexOverridesApplied,
|
||||
DurationSeconds = durationSeconds,
|
||||
},
|
||||
Environment = new PolicyEvaluationEnvironment
|
||||
Environment = new AttestationEnvironment
|
||||
{
|
||||
ServiceVersion = serviceVersion,
|
||||
HostId = Environment.MachineName,
|
||||
@@ -338,7 +338,7 @@ public sealed class DsseEnvelopeRequest
|
||||
[JsonSerializable(typeof(InTotoSubject))]
|
||||
[JsonSerializable(typeof(EvidenceBundleRef))]
|
||||
[JsonSerializable(typeof(PolicyEvaluationMetrics))]
|
||||
[JsonSerializable(typeof(PolicyEvaluationEnvironment))]
|
||||
[JsonSerializable(typeof(AttestationEnvironment))]
|
||||
[JsonSourceGenerationOptions(
|
||||
WriteIndented = false,
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
|
||||
Reference in New Issue
Block a user