A single framework PR closes a long-standing G-02 orphan on the NIS2
side: playbook.incident_management@v1 — the regulator-notification
engine — is now cited directly on the per-clause playbook_refs: for
each of the three Art. 23(4) clauses it serves, and the matching
orphan-skip entry has been retired. The narrative document already
walked an operator through this wiring against the milestone schema;
this PR lands the citation in the machine-readable mapping so the
orphan-CI ring covers it without a skip.
What landed
One PR against the framework, merged to main.
F-MAP-NIS2 — playbook.incident_management@v1 cited on Art. 23(4) per-clause refs (PR #532)
PR #532
adds playbook.incident_management@v1 to playbook_refs: on three
clauses in content/mappings/nis2/article-23.yaml:
- §23(4)(a) — the early-warning limb (24-hour window).
- §23(4)(b) — the incident-notification limb (72-hour window).
- §23(4)(d) — the final-report limb (one-month window).
The companion narrative article-23-incident-handling.md had already
documented this wiring against the milestone schema the playbook
emits, so the operator-facing story did not change with this PR. What
changed is the machine-readable surface: the per-clause playbook_refs
now name the playbook directly, which is the surface the orphan-CI
assertion walks.
The PR also removes the incident_management entry from
content/mappings/nis2/_orphan_skip.yaml. The skip was the placeholder
that kept the orphan ring honest while the citation lived only in the
narrative; the direct citation re-arms the assertion against the
playbook, which is the intended end state. The executive_metrics
reporting-playbook skip is left in place per the documented convention
that reporting playbooks are not expected to anchor on substantive
clauses.
Why this reads against G-02
G-02 on the published roadmap is the regulatory-mapping coverage goal:
every shipped playbook is reachable from a clause on each regulatory
framework where it has work to do. Before this PR, incident_management
was reachable from NIS2 only via the narrative document and an
orphan-skip — a defensible bridge while the per-clause schema was
catching up to the way the article is shaped (three timed milestones
against one obligation chain), but a bridge that did not satisfy the
orphan-CI assertion mechanically.
After this PR, the orphan-CI lane on NIS2 reads:
finalized=26 mapped=25 orphans=0 grace=0 skipped=1
Twenty-five finalized playbooks reachable from at least one NIS2 clause
on the per-clause surface, zero orphans, zero grace-window entries, and
one skip (the executive_metrics reporting playbook, which is
documented as out of scope for substantive anchoring). The article that
the regulator-notification engine serves is now also the article where
that playbook is mechanically traceable to each of its three clauses.
Sovereignty stance on this row
The wave does not change the sovereignty stance on any operational
artifact. The change is metadata against the existing mapping plus the
retirement of one skip; no playbook, primitive, control, metric, or
compiler artifact moves. The sovereignty discipline against
incident_management reads the same as before: operator-supplied
notification endpoint shaped against the milestone schema, no default
non-EU endpoint, no hosted third-party correlation in the data plane,
and three reference compile targets the operator runs inside their
own stack.
The traceability story does strengthen one beat. Art. 23 is the clause where a NIS2-covered organisation has to talk to a competent authority on a clock, and the playbook the project ships against that article is now anchored on each of the three timed limbs as a machine-readable artifact on the public tree — not as a project claim in a sentence on a website, but as a row a regulator or an internal auditor can pull and walk.
Honest framing on what stays open
This is a narrow row. It does not flip a workflow lane to Shipped, it
does not declare a regulatory framework complete, and it does not
change what incident_management does at runtime. The honest open
beats:
- G-02 catalogue depth continues. Art. 23(4)(c) — the
intermediate-information limb — and the rest of Art. 23 walk on
their own cards. The narrative document on
article-23is the source of truth for how those limbs relate to the milestone schema in the interim. - Orphan-CI green is a green frame, not a finished frame. Zero orphans on NIS2 on the evaluation commit reflects the catalogue at this commit; the grace-clock discipline keeps the ring honest as new playbooks ship into the orphan window.
- The skip-list is not the citation surface. Retiring the
incident_managementskip is the cleanup that follows landing the citation, not a result on its own. The skip-list discipline (skips are documented and time-bounded) continues as before.
The accurate claim on this wave is: the regulator-notification engine is now an auditable artifact on the per-clause NIS2 Art. 23(4) surface across early-warning, incident-notification, and final-report, and the orphan-skip that bridged the gap during the transition has been retired.
Where the work is
secops-ng-framework— this wave at PR #532. Merged tomain.secops-ng-website— this note and the eighty-seven that preceded it.github.com/secops-ng— the issues, the good-first-issues open against the community lane, the auto-generated roadmap.
One PR closes this window. playbook.incident_management@v1 is cited
directly on each of the three NIS2 Art. 23(4) per-clause playbook_refs
that it serves — early-warning, incident-notification, and final-report
— and the orphan-skip that held the line during the transition has
been retired. The article the regulator-notification engine was always
meant to serve is now the article where the citation is mechanical.