Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.

This commit is contained in:
StellaOps Bot
2025-12-26 21:54:17 +02:00
parent 335ff7da16
commit c2b9cd8d1f
3717 changed files with 264714 additions and 48202 deletions

View File

@@ -69,6 +69,10 @@ internal static class CliMetrics
private static readonly Counter<long> DecisionExportCounter = Meter.CreateCounter<long>("stellaops.cli.decision.export.count");
private static readonly Counter<long> DecisionVerifyCounter = Meter.CreateCounter<long>("stellaops.cli.decision.verify.count");
private static readonly Counter<long> DecisionCompareCounter = Meter.CreateCounter<long>("stellaops.cli.decision.compare.count");
// Sprint: SPRINT_20251228_002_BE_oci_attestation_attach (T3, T4)
private static readonly Counter<long> OciAttestAttachCounter = Meter.CreateCounter<long>("stellaops.cli.oci.attest.attach.count");
private static readonly Counter<long> OciAttestListCounter = Meter.CreateCounter<long>("stellaops.cli.oci.attest.list.count");
private static readonly Counter<long> OciAttestVerifyCounter = Meter.CreateCounter<long>("stellaops.cli.oci.attest.verify.count");
private static readonly Histogram<double> CommandDurationHistogram = Meter.CreateHistogram<double>("stellaops.cli.command.duration.ms");
public static void RecordScannerDownload(string channel, bool fromCache)
@@ -210,6 +214,33 @@ internal static class CliMetrics
=> DecisionCompareCounter.Add(1, WithSealedModeTag(
Tag("outcome", string.IsNullOrWhiteSpace(outcome) ? "unknown" : outcome)));
/// <summary>
/// Records an OCI attestation attach operation.
/// Sprint: SPRINT_20251228_002_BE_oci_attestation_attach (T3)
/// </summary>
/// <param name="outcome">The attach outcome (success, error, invalid_json).</param>
public static void RecordOciAttestAttach(string outcome)
=> OciAttestAttachCounter.Add(1, WithSealedModeTag(
Tag("outcome", string.IsNullOrWhiteSpace(outcome) ? "unknown" : outcome)));
/// <summary>
/// Records an OCI attestation list operation.
/// Sprint: SPRINT_20251228_002_BE_oci_attestation_attach (T3)
/// </summary>
/// <param name="outcome">The list outcome (success, error).</param>
public static void RecordOciAttestList(string outcome)
=> OciAttestListCounter.Add(1, WithSealedModeTag(
Tag("outcome", string.IsNullOrWhiteSpace(outcome) ? "unknown" : outcome)));
/// <summary>
/// Records an OCI attestation verify operation.
/// Sprint: SPRINT_20251228_002_BE_oci_attestation_attach (T4)
/// </summary>
/// <param name="outcome">The verify outcome (success, failed, failed_strict, error).</param>
public static void RecordOciAttestVerify(string outcome)
=> OciAttestVerifyCounter.Add(1, WithSealedModeTag(
Tag("outcome", string.IsNullOrWhiteSpace(outcome) ? "unknown" : outcome)));
public static IDisposable MeasureCommandDuration(string command)
{
var start = DateTime.UtcNow;