Task · GCI-0008.03

Technology asset registry - sentinel matching with a published unmatched share

Description

The curated half of the asset register. Registry A is Grafana own integration label - discovered, not maintained, and already covered by Phase 1. Registry B is this task: everything Alloy and k8s-monitoring scrape directly, which sets no integration label and is most cloud-native infrastructure.

Match sentinels, never prefixes

A first-token metric-name prefix classifies confidently wrong. Measured across six sampled stacks (4,065 distinct names, 24h window), the largest prefixes included node, go, prometheus, apiserver, container, process, rest and cluster - all generic. Use one unambiguous sentinel metric name per technology.

Seed set verified present in a live estate, from the same sample: kube_pod_info, node_uname_info, container_cpu_usage_seconds_total, pg_up, coredns_build_info, karpenter_nodes_created_total, alloy_build_info, prometheus_build_info, aws CloudWatch namespaces.

Seed set the sample proves is NEEDED and a generic cloud-native list would have missed entirely - these are the commercially interesting half of that estate:

Prefix seen Technology Why it matters
slurm Slurm workload manager HPC scheduling
weka WEKA parallel filesystem HPC storage
DCGM, nvidia NVIDIA DCGM exporter GPU fleet under observation
ondemand Open OnDemand HPC user portal
akuity Akuity managed ArgoCD platform tooling
nomad HashiCorp Nomad non-k8s orchestration
cnpg CloudNativePG managed Postgres on k8s
vm VictoriaMetrics competing TSDB in the estate
gitlab, github, gha CI platforms delivery pipeline observed
probe blackbox exporter endpoint checks

Slurm plus WEKA plus DCGM plus Open OnDemand together describe an HPC and AI research-computing estate under observation. That is the strongest available material for the upside half of the origin question, and no generic registry would have found it.

Rules

Acceptance Criteria

Definition of Done

Implementation Plan

  1. Add a versioned technology registry data file whose default matcher is one exact sentinel metric per technology.
  2. Add the user-approved Akuity exception as a narrowly anchored regex over invariant metric structure, containing no deployment-specific segment.
  3. Implement deterministic classification that reports present technologies plus total, matched, and unmatched metric-name counts and refuses ambiguous matches.
  4. Add an artifact-reading synthetic contract test for schema, exact-sentinel uniqueness, pattern safety, HPC/GPU coverage, version changes, and unmatched accounting.
  5. Run the full task gate, review, commit, and push; leave dashboard-visibility acceptance open for the GCI-0008.06 wiring if it cannot be objectively rendered in this independent slice.

Plan correction after review: implement Akuity matching as a linear prefix/suffix pattern object, not a raw regular expression.

Implementation Notes

User decision: Akuity may use prefix/pattern matching because its observed metric names embed deployment-specific segments; all stable technologies remain exact-sentinel matched.

Implemented a versioned JSON registry and deterministic classifier. Exact sentinels cover the stable technologies; Akuity uses the user-approved linear prefix/suffix matcher with no deployment-specific segment. CodeRabbit major finding fixed by removing raw regex execution; minor malformed-artifact finding also fixed. Validation: 12 focused tests plus 2 subtests; full suite 1356 passed, 2 skipped, 6572 subtests; OpenTofu module and standalone validations, formatting, generated budget and shipped-text gate clean. Acceptance criterion 3 remains for GCI-0008.06 dashboard wiring; DoD 3 awaits the queued secret-backed CI identifier scan.

Final Summary

Shipped the versioned sentinel technology registry with deterministic exact matching, the bounded Akuity pattern exception, HPC/GPU coverage and explicit unmatched accounting. Pillar K now renders the registry version and classification evidence; full gates and the secret-backed identifier scan passed.

View the source file on GitHub