The previous field note read the F-MET G-04 reference-visualisation
catch-up wave landing: nine PRs against the framework moved the
.viz.md sibling-file convention from one CORE exemplar plus four
SKELETON entries to thirty-three committed siblings across eight
clusters. The accurate claim on that row was broad cluster-by-cluster
coverage; the catalogue floor still carried eleven entries without
a committed sibling behind the row.
This note reads two beats from the same window. First, four further PRs close the property at forty-four of forty-four entries across the catalogue — the G-04 def-of-done reference-visualisation pass is structurally complete. Second, two PRs open the next catalogue-maturity step: OCSF source-data-shape bindings begin landing on the MTTD detection-latency and MTTR response-latency clusters, tying each latency KPI to a concrete OCSF event shape on the artifact rather than deferring the binding behind the row.
What landed in this window
Six PRs against the framework, all merged to main. The first four
close the .viz.md sibling property across the remaining catalogue
clusters; the last two open the OCSF-binding pass on the latency
families.
Detection-quality cluster (PR #459)
PR #459
lands sibling .viz.md artifacts for the detection-quality family:
kri.false_positive_rate@v1, kpi.lateral_hunt_coverage@v1, and
kri.recurring_cloud_misconfig@v1. The trio reads the audit-side
questions on detection signal-to-noise (the false-positive KRI),
proactive coverage of the lateral-movement surface (the hunt-coverage
KPI against a defined hunt cadence), and the recurrence-rate KRI on
cloud-misconfiguration findings against an in-period denominator.
Chart contracts follow the cluster pattern set by PR #449 — chart
kind + headline-figure annotation, in-tree Mermaid reference
rendering, threshold-band table pointing back at the catalogue YAML.
Corrective-action governance cluster (PR #460)
PR #460
lands sibling viz artifacts for the corrective-action governance
family: kri.corrective_action_overdue@v1,
kpi.corrective_action_close_rate@v1, and
kpi.control_effectiveness@v1. The trio reads the overdue-count
KRI against the active backlog, the close-rate KPI against an
in-period denominator, and the control-effectiveness KPI against
the in-period audit-test outcome — the three rows an audit asks
about directly when reading the corrective-action programme.
Incident-process integrity cluster (PR #461)
PR #461
lands sibling viz artifacts for the incident-process integrity
family: kpi.timeline_completeness@v1,
kpi.review_completion_sla@v1, and
kpi.handoff_brief_delivery_sla@v1. The trio reads the
process-discipline KPIs the catalogue carries against the incident
lifecycle — the percentage of closed incidents that carry a
complete timeline against the playbook step contract, the
post-incident review on-time-rate against the SLA window, and the
handoff-brief delivery on-time-rate across shift transitions.
CLOSEOUT cluster — 44/44 (PR #462)
PR #462
lands sibling viz artifacts for the closeout cluster:
kpi.backup_integrity_pass_rate@v1, kri.cvd_intake_aging@v1,
kri.escalation_tier_breach@v1, and kri.releases_without_sbom@v1.
The cluster reads the four entries the catalogue carries on
resilience-and-supply-chain hygiene that did not fit the prior
groupings — the backup-restore integrity-test pass rate, the
coordinated-vulnerability-disclosure intake-aging KRI, the
escalation-tier breach KRI across on-call paths, and the
release-without-SBOM KRI on the supply-chain surface.
This PR closes the property on the catalogue floor: forty-four
metrics, forty-four committed .viz.md siblings, every artifact
mirroring the exemplar contract, every metric YAML carrying the
Reference visualisation: paragraph the regression net asserts.
The G-04 def-of-done reference-visualisation pass reaches structural
completion on this row.
OCSF source-data-shape bindings — MTTD detection-latency cluster (PR #463)
PR #463
opens the next catalogue-maturity step. Each .viz.md sibling on
the MTTD detection-latency cluster — the unscoped kpi.mttd@v1
baseline plus the four per-scenario variants (mttd_cloud_misconfig,
mttd_exfil, mttd_identity_compromise,
mttd_threat_intel_indicator) — gains an OCSF source-data-shape
section that names the concrete OCSF class the detection event
reads against, the OCSF attributes the latency clock binds to
(time for the detection-side timestamp and the activity-side
timestamp the cluster reads from metadata.original_time or the
class-specific event-time field), and the OCSF profile extensions
the per-scenario variants narrow against.
The PR also reaches into each metric YAML’s measurement.inputs[]
binding to back-reference the OCSF class on the source-event row,
so the catalogue YAML carries the binding as a first-class field
rather than as a .viz.md-only annotation. The detection-latency
surface now reads OCSF-first on the source side; the catalogue
sibling and the YAML agree on the same binding.
OCSF source-data-shape bindings — MTTR response-latency cluster (PR #464)
PR #464
mirrors PR #463 on the remediation side. Each .viz.md sibling
on the MTTR response-latency cluster — the unscoped
kpi.mttr_critical@v1 baseline, the scoped variants
(kpi.mttr_containment@v1, kpi.mttr_phishing_triage@v1), and the
per-scenario family (mttr_blocklist_propagation,
mttr_cloud_misconfig, mttr_on_call_ack) — gains an OCSF
source-data-shape section that names the response-side event the
MTTR clock binds against. Where no unambiguous OCSF class covers
the playbook-step transition that closes the latency (the
on-call-ack acknowledgement, the blocklist-propagation push), the
sibling names that deferral on the artifact rather than invent a
binding — the honest framing the cluster pattern already established.
The MTTD/MTTR pair now closes as the detection-and-remediation
latency surface on the same OCSF-binding contract, on the same
.viz.md sibling property, on the same metric YAML
measurement.inputs[] back-reference.
What this wave does to the catalogue floor
After this window, the content/metrics/ surface carries:
- Forty-four committed
.viz.mdsiblings on the catalogue floor — the G-04 def-of-done reference-visualisation pass reaches structural completion at 44/44, every catalogue entry carries a committed sibling on the cluster pattern set by PR #449. - OCSF source-data-shape bindings on both latency clusters —
the MTTD detection-latency family (unscoped + four per-scenario)
and the MTTR response-latency family (unscoped + two scoped +
three per-scenario) both carry OCSF class + attribute bindings
on the
.viz.mdsibling and a back-reference on the metric YAMLmeasurement.inputs[]row. - The G-04 lane fully exemplified across both axes the property contract has — the chart-and-threshold axis on every entry, the OCSF-source axis on the latency families that opened the lane. Subsequent passes walk the OCSF axis across the remaining clusters; the chart axis is already at floor.
Why the OCSF binding matters for catalogue maturity
A committed reference visualisation closed the which chart, against which thresholds question on the dashboard surface. The OCSF source-data-shape binding closes the symmetric question on the upstream surface: which event shape does this metric read against, and how does the latency clock bind to the OCSF class attributes?
Without the binding, the catalogue says this is an MTTD against a detection event and the operator carries the source-event mapping in whichever SIEM/XDR they picked first. With the binding, the catalogue names the OCSF class on the artifact, the attribute the clock starts on, the attribute the clock stops on, and any profile extensions the per-scenario variants narrow against. Two operators running different upstream stacks compile the same latency clock against the same OCSF binding — the catalogue defines the source contract, the operator’s adapter normalises into it, and a divergence between the catalogue and the runtime ingest becomes a visible diff on the adapter layer rather than a re-derivation during the audit.
For the G-04 catalogue floor specifically, the OCSF binding closes the property the lane needs to be portable across the three reference compile targets: an n8n compile, a Temporal compile, and a LangGraph compile each emit the same metric definition against the same OCSF event-shape contract, not three differently-shaped ingest paths against the same catalogue prose.
Honest framing on what stays open behind the row
The four-PR closeout wave plus the two OCSF-binding PRs close one axis at floor and open a second axis on two clusters; the rest of the lane:
- OCSF bindings across the remaining clusters. The MTTD and MTTR latency families carry OCSF source-data-shape bindings after this window. The other six clusters — CRA Article 14 regulatory-clock, identity-lifecycle, regulator-notification SLA, coverage, remediation-throughput, phishing-detection — plus the new four — detection-quality, corrective-action governance, incident-process integrity, CLOSEOUT — still defer the OCSF source-data-shape binding behind the row. Subsequent passes walk the binding across each cluster on the contract PR #463 and PR #464 established.
- Operator-tool deferred bindings remain operator-tool deferred.
Some metrics (the coverage family, the phishing-simulation
click-rate, the on-call-ack lifecycle event) bind against an
operator-tool decision rather than a single OCSF class. The
OCSF pass surfaces the deferral on the artifact rather than
invent a binding — the same honest framing the catch-up wave
established on the
.viz.mdside. - Floor-wide CI guard on telemetry refs + viz coverage. The
EXTEND sibling that asserts every
content/metrics/*.yamlcarries both atelemetry_refs[]binding and a committed.viz.mdsibling is the next CI lift, moving the property from regression-net-on-allow-list to floor-wide enforcement now that the allow-list is at 44/44.
The accurate claim on this row is: the F-MET G-04 reference-visualisation pass closes at forty-four of forty-four entries across the executive-metrics catalogue, the cluster pattern is structurally complete on the chart-and-threshold axis, and the OCSF source-data-shape binding axis opens on the two latency clusters as the next catalogue-maturity step behind the row.
Where the work is
secops-ng-framework— the detection-quality cluster lands at PR #459; the corrective-action governance cluster at PR #460; the incident-process integrity cluster at PR #461; the CLOSEOUT cluster (44/44) at PR #462; the OCSF source-data-shape bindings on the MTTD detection-latency cluster at PR #463; and the OCSF source-data-shape bindings on the MTTR response-latency cluster at PR #464. All merged tomain.secops-ng-website— this note and the seventy-four that preceded it.github.com/secops-ng— the issues, the good-first-issues open against the community lane, the auto-generated roadmap.
Two beats close this window. The .viz.md sibling-file convention
on the F-MET executive-metrics lane reaches forty-four of forty-four
committed siblings across the catalogue floor — the G-04 def-of-done
reference-visualisation pass is structurally complete. The OCSF
source-data-shape binding opens as the next catalogue-maturity step
on the MTTD detection-latency and MTTR response-latency clusters,
tying each latency KPI to a concrete OCSF event shape on both the
.viz.md sibling and the metric YAML’s measurement.inputs[]
back-reference. The OCSF binding across the remaining clusters, the
operator-tool deferred bindings staying honest, and the floor-wide
CI guard on telemetry refs + viz coverage open as the next passes
behind the row.