DOCA hardware safety
Where to start: This skill is the bundle's single source of truth
for the discipline that wraps every change touching DPU / NIC hardware
state on a live system. Open
TASKS.md when the operator is about to apply a
hardware-touching change and needs the change-application discipline
(pre-flight inventory → out-of-band path → window → apply → verify
→ rollback). Open CAPABILITIES.md when the
question is what does hardware-safety even cover (the class of
changes in scope, the failure modes the policy prevents, the
observability surface that gates a change, and the meta-policy that
every per-artifact ## Safety policy overlays).
Every per-artifact skill (services, libraries, tools) in the bundle
that recommends a hardware-touching action overlays this meta-policy
with artifact-specific safety. The per-artifact ## Safety policy
anchors do NOT redefine the cross-cutting discipline — they layer the
artifact's own concerns on top of it. This skill is the layer they all
build on.
Example questions this skill answers well
The CLASSES of hardware-safety questions this skill is built to
answer, each with one worked example. The agent should treat the
class as load-bearing — the worked example is a single instance.
- "I'm about to apply a hardware-touching change. What do I have to
capture before I touch anything?" — worked example: "the
per-artifact skill told me to flip a firmware-level emulation slot;
what do I capture first?". Answered by the pre-flight inventory
in
TASKS.md ## configure plus the
inventory taxonomy in
CAPABILITIES.md ## Capabilities and modes.
- "This change might drop the link I'm using to manage the
BlueField. Is that safe?" — worked example: "I'm about to flip
the BlueField between NIC and DPU mode over the same management
link". Answered by the out-of-band access rule in
CAPABILITIES.md ## Safety policy
plus the OOB-precondition gate in
TASKS.md ## configure.
- "The per-artifact skill said to write an
mlxconfig parameter,
then reboot. Is that the right sequence?" — worked example:
"the storage-emulation skill told me to enable a firmware slot
via mlxconfig and then warm-reboot to apply it". Answered by
the mlxconfig-class rule in
CAPABILITIES.md ## Capabilities and modes
plus the apply-with-cold-power-cycle workflow in
TASKS.md ## modify.
- "My deployment plan reflashes the BlueField BFB during business
hours. Is that OK?" — worked example: "I have a one-hour
window during the day; can I reflash now?". Answered by the
maintenance-window discipline in
CAPABILITIES.md ## Safety policy
plus the firmware-burn workflow in
TASKS.md ## modify.
- "How do I prove the change works before I touch production?"
— worked example: "the change is small; can I skip the lab
replica". Answered by the replica-first rule in
TASKS.md ## test plus the
pre-hardware-validation pattern in
CAPABILITIES.md ## Capabilities and modes.
- "How do I roll back if this change goes wrong?" — worked
example: "I just reflashed the BFB and the host can't see the
representors anymore". Answered by the rollback ladder in
TASKS.md ## debug plus the
rollback-must-be-documented rule in
CAPABILITIES.md ## Safety policy.
- "This change doesn't have a documented rollback. Should I still
apply it?" — worked example: "the vendor says this firmware
rev is one-way". Answered by the refuse-and-escalate rule in
CAPABILITIES.md ## Safety policy
plus the escalation path in TASKS.md ## debug.
When to load this skill
Load this skill whenever the agent is about to recommend, or is
helping the operator apply, a change that touches DPU / NIC hardware
state on a live system. The decision must be made before the
agent composes its first sentence — the activation checklist below
is the same one referenced from
AGENTS.md ## Cross-cutting overlay activation triggers,
mirrored here so a per-artifact skill that already loaded this skill
has the activation rule at hand.
Agent activation checklist — load this skill at the START of the answer when any cell below is true
| Trigger class |
Concrete prompt-side signals (any one fires the overlay) |
mlxconfig-class change |
the prompt or the agent's next recommended action mentions mlxconfig directly; OR toggles BlueField between NIC / DPU / Separated-Host mode; OR enables SR-IOV; OR enables device-emulation slot (virtio-net, NVMe-emu, snap, virtio-blk-emu); OR changes BAR window / window size; OR sets any firmware-committed parameter that requires a reset to take effect |
| Firmware / BFB |
NIC firmware burn (flint, mft, mlxfwmanager, mlxconfig with -y reset); BlueField BFB reflash (bfb-install, rshim); BlueField mode change that requires a BFB swap |
| Host kernel state |
host kernel boot parameter change (IOMMU mode iommu=pt / intel_iommu=on, default_hugepagesz, hugepagesz, nr_hugepages, pci=resource_alignment, vfio-pci.ids); requires host reboot |
| Hugepages |
hugepage reservation change (/sys/kernel/mm/hugepages/*/nr_hugepages, sysctl vm.nr_hugepages); hugepage mount change (mount -t hugetlbfs); this is global state shared with every DOCA / DPDK process on the host |
| PCIe state |
PCIe rebind / echo > /sys/bus/pci/.../{bind,unbind,remove,rescan}; representor enable/disable; eswitch mode change (devlink dev eswitch set ... mode {switchdev,legacy}); link down/up on a port currently carrying traffic |
| BlueField reboot class |
BlueField cold reboot, BlueField warm reboot to apply mlxconfig; any change whose blast radius is "every hosted service on this DPU restarts" |
| Per-artifact cross-link |
any per-artifact skill's ## Safety policy cross-links here for the cross-cutting rule body |
When any cell above fires, the agent MUST load this skill before
composing the first sentence of the answer. For production it MUST
walk the change-application discipline in this order:
TASKS.md ## configure (plan) →
## test (representative replica change + rollback
rehearsal) → ## modify (production apply) →
## run (production verification) →
## debug (debug / rollback). It MUST cite the
activation explicitly in the answer (e.g. "because this touches
mlxconfig, the answer follows the doca-hardware-safety
discipline …") so the user can audit the reasoning.
The activation is mandatory, not advisory. The most common failure mode this overlay prevents is "the agent recommended a mlxconfig change with no maintenance window, no out-of-band path, and no rollback statement, the user applied it, the management link dropped, and the box was unrecoverable without a physical console." The cost of one unjustified activation (a few extra paragraphs in the answer) is trivial compared to the cost of one missed activation.
Refuse-and-escalate is a hard rule
If any of the following is true, the agent MUST stop and refuse to recommend the change — not soften the warning, not proceed with a "this is risky but here's how" answer, not defer the rollback question to "you should think about that":
- The change has no documented rollback path AND the user cannot provide one. (Per
CAPABILITIES.md ## Safety policy rollback-must-be-documented rule.)
- The change is link-breaking AND the host has no out-of-band access path. (Per
CAPABILITIES.md ## Safety policy out-of-band-precondition rule.)
- The change touches hardware state AND the user has not confirmed an
explicit, time-boxed maintenance window. (Per
CAPABILITIES.md ## Safety policy
maintenance-window rule.)
- Production application is contemplated before the change and its
rollback have passed on a representative non-prod replica. This
refusal is intent-based: it applies to a plan, recommendation, or
next action that would reach production early, not only when the
user explicitly asks for "direct application." A replica
mismatched on the required hardware, firmware, kernel, module, or
function-topology axes does not satisfy the gate; obtain a
representative replica or refuse and escalate. (Per
TASKS.md ## test replica-first rule.)
In each of these cases the correct answer shape is "this change requires X (here is why); the bundle refuses to recommend it without X; here is the route to obtain X" — not silence and not improvisation. The refuse-and-escalate rule is what makes the bundle's hardware-safety guidance trustworthy to production operators.
Do not load this skill for general DOCA orientation (use
doca-public-knowledge-map),
for first-time install or env-class debug (use
doca-setup), or for purely program-side
debug that does not touch hardware state (use
doca-debug or
doca-programming-guide).
What this skill provides
This is a thin loader. The body keeps only the orientation needed
to pick the right next file. The substantive content lives in two
companion files:
CAPABILITIES.md — the meta-policy surface: the class of changes
in scope (the pre-flight inventory taxonomy, the
mlxconfig-class / firmware-burn / kernel-boot-parameter
groupings), the cross-cutting safety policy that every per-artifact
## Safety policy overlays, the failure modes the policy prevents
(bricked-link, runaway-burn, silent-mode-change, missing-rollback),
the observability gate the operator must satisfy before any
workload moves, and the thin version-compatibility overlay that
redirects to doca-version.
TASKS.md — the change-application workflows: ## configure (the
pre-flight inventory + out-of-band + maintenance-window plan),
## build (routing stub — hardware-touching changes do not produce
build artifacts), ## modify (the apply-the-change discipline,
including the mlxconfig cold-power-cycle rule and the
firmware-burn discipline), ## run (the post-change verification
gate), ## test (the replica-first smoke), ## debug (the
rollback ladder + the refuse-and-escalate escape valve), and the
## Deferred task verbs block.
Loading order
- Read this
SKILL.md first to confirm the user's question is in
scope (the agent is about to recommend a change that touches
hardware state on a live system).
- For the class of changes in scope, the meta-safety policy, the
failure-mode taxonomy, the observability gate, and the
version-overlay redirect, see CAPABILITIES.md.
- For the apply-a-change workflow — pre-flight inventory →
out-of-band → maintenance window → apply → verify → rollback —
see TASKS.md.
- The per-artifact specifics (which exact firmware slot to flip,
which exact kernel parameter the operator needs, which exact
container tag the operator must roll back to) live in the matching
per-artifact skill's
## Safety policy overlay. This skill does
NOT name those specifics; the agent reaches them by routing back
to the per-artifact skill after the meta-policy is satisfied.
Related skills
doca-version — the four-way match
rule and the host ↔ BlueField BFB ↔ container-tag pairing. Every
hardware-touching change has a version dimension; this skill's
## Version compatibility overlay is a 3-5 line redirect to
doca-version for the body.
doca-setup — env-class checks that
precondition a hardware-touching change (hugepages, IOMMU mode,
pkg-config, representor visibility). The pre-flight inventory in
this skill's ## configure cross-links to doca-setup for the
env-class half of the inventory.
doca-debug — the cross-cutting layered
debug ladder. When a hardware-touching change goes wrong, the
rollback ladder in this skill's ## debug hands off to
doca-debug once the rollback has restored a known state and the
symptom now lives at a software layer.
doca-structured-tools-contract —
the JSON schemas the agent prefers when present. The
collect-host-state / collect-dpu-state schemas are the
structured form of this skill's pre-flight inventory; the agent
uses them as the one-shot answer when the host has the helpers
installed.
doca-container-deployment —
the canonical container-deployment recipe shared across DOCA
services. Several hardware-touching changes (BlueField cold
reboot, BFB reflash) interrupt every hosted service container on
the BlueField; the rollback path quotes the
doca-container-deployment re-deploy shape.
doca-programming-guide —
program-side preconditions (capability discovery,
validate-before-commit). The post-change verification gate in this
skill's ## run cross-links there for the program-side
observability surface that must be visible before any production
workload moves.
- Per-artifact
## Safety policy anchors in each in-bundle
service / library / tool skill — e.g. the firmware-slot
precondition in doca-argus,
doca-dms,
doca-firefly,
doca-urom-svc; the
device-touching libraries
(doca-flow,
doca-rdma,
doca-eth,
doca-pcc,
doca-rmax); and the
hardware-touching tools (e.g.
doca-spcx-cc,
doca-pcc-counters).
Every in-bundle artifact skill's ## Safety policy overlays
this meta-policy with artifact-specific safety. The cross-link is
intentionally bidirectional: per-artifact skills link here for
the meta-policy; this skill enumerates the in-bundle overlays in
CAPABILITIES.md ## Safety policy
as "skills that overlay this meta-policy". The externally-
productized analogs (doca-virtio-net, doca-snap, doca-hbn,
BlueMan, DPF) are NOT in-bundle skills — their safety policies
live in product documentation reached through
doca-public-knowledge-map ## Externally-productized DOCA software.
1---2name: doca-hardware-safety3description: Use this skill whenever the agent is about to recommend or apply a change that touches DPU / NIC hardware state on a live system — mlxconfig firmware-parameter write, NIC firmware burn, BFB reflash, NIC ↔ DPU mode flip, SR-IOV or device-emulation slot enable, kernel boot-parameter change (IOMMU, hugepages, VFIO), PCIe rebind / rescan / link-state flip, or BlueField cold reboot. Wraps the change in pre-flight inventory, OOB reachability, a maintenance window, the mlxconfig cold-power-cycle rule, replica rehearsal, and rollback. Trigger even when the user does not say "hardware safety" — implicit phrasings: "flip BlueField mode over SSH", "enable SR-IOV and reboot", "burned firmware but mlxconfig shows old value", "reflashed BFB and lost representors", "reflash during business hours", "vendor says this is one-way". Refuse for general DOCA orientation (doca-public-knowledge-map), install or env debug (doca-setup), and program-side debug (doca-debug, doca-programming-guide) — those belong to other skills.4license: Apache-2.05---67# DOCA hardware safety89**Where to start:** This skill is the bundle's single source of truth10for the discipline that wraps every change touching DPU / NIC hardware11state on a live system. Open12[`TASKS.md`](TASKS.md) when the operator is about to *apply* a13hardware-touching change and needs the change-application discipline14(pre-flight inventory → out-of-band path → window → apply → verify15→ rollback). Open [`CAPABILITIES.md`](CAPABILITIES.md) when the16question is *what does hardware-safety even cover* (the class of17changes in scope, the failure modes the policy prevents, the18observability surface that gates a change, and the meta-policy that19every per-artifact `## Safety policy` overlays).2021Every per-artifact skill (services, libraries, tools) in the bundle22that recommends a hardware-touching action overlays this meta-policy23with artifact-specific safety. The per-artifact `## Safety policy`24anchors do NOT redefine the cross-cutting discipline — they layer the25artifact's own concerns on top of it. This skill is the layer they all26build on.2728## Example questions this skill answers well2930The CLASSES of hardware-safety questions this skill is built to31answer, each with one worked example. The agent should treat the32*class* as load-bearing — the worked example is a single instance.3334- **"I'm about to apply a hardware-touching change. What do I have to35 capture *before* I touch anything?"** — worked example: *"the36 per-artifact skill told me to flip a firmware-level emulation slot;37 what do I capture first?"*. Answered by the pre-flight inventory38 in [`TASKS.md ## configure`](TASKS.md#configure) plus the39 inventory taxonomy in40 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes).41- **"This change might drop the link I'm using to manage the42 BlueField. Is that safe?"** — worked example: *"I'm about to flip43 the BlueField between NIC and DPU mode over the same management44 link"*. Answered by the out-of-band access rule in45 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)46 plus the OOB-precondition gate in47 [`TASKS.md ## configure`](TASKS.md#configure).48- **"The per-artifact skill said to write an `mlxconfig` parameter,49 then reboot. Is that the right sequence?"** — worked example:50 *"the storage-emulation skill told me to enable a firmware slot51 via `mlxconfig` and then warm-reboot to apply it"*. Answered by52 the `mlxconfig`-class rule in53 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)54 plus the apply-with-cold-power-cycle workflow in55 [`TASKS.md ## modify`](TASKS.md#modify).56- **"My deployment plan reflashes the BlueField BFB during business57 hours. Is that OK?"** — worked example: *"I have a one-hour58 window during the day; can I reflash now?"*. Answered by the59 maintenance-window discipline in60 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)61 plus the firmware-burn workflow in62 [`TASKS.md ## modify`](TASKS.md#modify).63- **"How do I prove the change works *before* I touch production?"**64 — worked example: *"the change is small; can I skip the lab65 replica"*. Answered by the replica-first rule in66 [`TASKS.md ## test`](TASKS.md#test) plus the67 pre-hardware-validation pattern in68 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes).69- **"How do I roll back if this change goes wrong?"** — worked70 example: *"I just reflashed the BFB and the host can't see the71 representors anymore"*. Answered by the rollback ladder in72 [`TASKS.md ## debug`](TASKS.md#debug) plus the73 rollback-must-be-documented rule in74 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy).75- **"This change doesn't have a documented rollback. Should I still76 apply it?"** — worked example: *"the vendor says this firmware77 rev is one-way"*. Answered by the refuse-and-escalate rule in78 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)79 plus the escalation path in [`TASKS.md ## debug`](TASKS.md#debug).8081## When to load this skill8283Load this skill whenever the agent is about to recommend, or is84helping the operator apply, a change that touches DPU / NIC hardware85state on a live system. The decision must be made **before** the86agent composes its first sentence — the activation checklist below87is the same one referenced from88[`AGENTS.md ## Cross-cutting overlay activation triggers`](../../AGENTS.md#cross-cutting-overlay-activation-triggers),89mirrored here so a per-artifact skill that already loaded this skill90has the activation rule at hand.9192## Agent activation checklist — load this skill at the START of the answer when any cell below is true9394| Trigger class | Concrete prompt-side signals (any one fires the overlay) |95| --- | --- |96| `mlxconfig`-class change | the prompt or the agent's next recommended action mentions `mlxconfig` directly; OR toggles BlueField between NIC / DPU / Separated-Host mode; OR enables SR-IOV; OR enables device-emulation slot (virtio-net, NVMe-emu, snap, virtio-blk-emu); OR changes BAR window / window size; OR sets any firmware-committed parameter that requires a reset to take effect |97| Firmware / BFB | NIC firmware burn (`flint`, `mft`, `mlxfwmanager`, `mlxconfig` with `-y` reset); BlueField BFB reflash (`bfb-install`, `rshim`); BlueField mode change that requires a BFB swap |98| Host kernel state | host kernel boot parameter change (IOMMU mode `iommu=pt` / `intel_iommu=on`, `default_hugepagesz`, `hugepagesz`, `nr_hugepages`, `pci=resource_alignment`, `vfio-pci.ids`); requires host reboot |99| Hugepages | hugepage *reservation* change (`/sys/kernel/mm/hugepages/*/nr_hugepages`, `sysctl vm.nr_hugepages`); hugepage *mount* change (`mount -t hugetlbfs`); this is global state shared with every DOCA / DPDK process on the host |100| PCIe state | PCIe rebind / `echo > /sys/bus/pci/.../{bind,unbind,remove,rescan}`; representor enable/disable; eswitch mode change (`devlink dev eswitch set ... mode {switchdev,legacy}`); link down/up on a port currently carrying traffic |101| BlueField reboot class | BlueField cold reboot, BlueField warm reboot to apply `mlxconfig`; any change whose blast radius is *"every hosted service on this DPU restarts"* |102| Per-artifact cross-link | any per-artifact skill's `## Safety policy` cross-links here for the cross-cutting rule body |103104When any cell above fires, the agent MUST load this skill **before**105composing the first sentence of the answer. For production it MUST106walk the change-application discipline in this order:107[`TASKS.md ## configure`](TASKS.md#configure) (plan) →108[`## test`](TASKS.md#test) (representative replica change + rollback109rehearsal) → [`## modify`](TASKS.md#modify) (production apply) →110[`## run`](TASKS.md#run) (production verification) →111[`## debug`](TASKS.md#debug) (debug / rollback). It MUST cite the112activation explicitly in the answer (e.g. *"because this touches113`mlxconfig`, the answer follows the `doca-hardware-safety`114discipline …"*) so the user can audit the reasoning.115116The activation is **mandatory, not advisory.** The most common failure mode this overlay prevents is *"the agent recommended a `mlxconfig` change with no maintenance window, no out-of-band path, and no rollback statement, the user applied it, the management link dropped, and the box was unrecoverable without a physical console."* The cost of one unjustified activation (a few extra paragraphs in the answer) is trivial compared to the cost of one missed activation.117118## Refuse-and-escalate is a hard rule119120If any of the following is true, the agent MUST stop and refuse to recommend the change — not soften the warning, not proceed with a *"this is risky but here's how"* answer, not defer the rollback question to *"you should think about that"*:1211221. The change has no documented rollback path AND the user cannot provide one. (Per [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy) *rollback-must-be-documented* rule.)1232. The change is link-breaking AND the host has no out-of-band access path. (Per [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy) *out-of-band-precondition* rule.)1243. The change touches hardware state AND the user has not confirmed an125 explicit, time-boxed maintenance window. (Per126 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)127 *maintenance-window* rule.)1284. Production application is contemplated before the change and its129 rollback have passed on a representative non-prod replica. This130 refusal is intent-based: it applies to a plan, recommendation, or131 next action that would reach production early, not only when the132 user explicitly asks for "direct application." A replica133 mismatched on the required hardware, firmware, kernel, module, or134 function-topology axes does not satisfy the gate; obtain a135 representative replica or refuse and escalate. (Per136 [`TASKS.md ## test`](TASKS.md#test) *replica-first* rule.)137138In each of these cases the correct answer shape is *"this change requires X (here is why); the bundle refuses to recommend it without X; here is the route to obtain X"* — not silence and not improvisation. The refuse-and-escalate rule is what makes the bundle's hardware-safety guidance trustworthy to production operators.139140Do **not** load this skill for general DOCA orientation (use141[`doca-public-knowledge-map`](../doca-public-knowledge-map/SKILL.md)),142for first-time install or env-class debug (use143[`doca-setup`](../doca-setup/SKILL.md)), or for purely program-side144debug that does not touch hardware state (use145[`doca-debug`](../doca-debug/SKILL.md) or146[`doca-programming-guide`](../doca-programming-guide/SKILL.md)).147148## What this skill provides149150This is a **thin loader**. The body keeps only the orientation needed151to pick the right next file. The substantive content lives in two152companion files:153154- `CAPABILITIES.md` — the meta-policy surface: the class of changes155 in scope (the pre-flight inventory taxonomy, the156 `mlxconfig`-class / firmware-burn / kernel-boot-parameter157 groupings), the cross-cutting safety policy that every per-artifact158 `## Safety policy` overlays, the failure modes the policy prevents159 (bricked-link, runaway-burn, silent-mode-change, missing-rollback),160 the observability gate the operator must satisfy before any161 workload moves, and the thin version-compatibility overlay that162 redirects to [`doca-version`](../doca-version/SKILL.md).163- `TASKS.md` — the change-application workflows: `## configure` (the164 pre-flight inventory + out-of-band + maintenance-window plan),165 `## build` (routing stub — hardware-touching changes do not produce166 build artifacts), `## modify` (the apply-the-change discipline,167 including the `mlxconfig` cold-power-cycle rule and the168 firmware-burn discipline), `## run` (the post-change verification169 gate), `## test` (the replica-first smoke), `## debug` (the170 rollback ladder + the refuse-and-escalate escape valve), and the171 `## Deferred task verbs` block.172173## Loading order1741751. Read this `SKILL.md` first to confirm the user's question is in176 scope (the agent is about to recommend a change that touches177 hardware state on a live system).1782. **For the class of changes in scope, the meta-safety policy, the179 failure-mode taxonomy, the observability gate, and the180 version-overlay redirect, see [CAPABILITIES.md](CAPABILITIES.md).**1813. **For the apply-a-change workflow — pre-flight inventory →182 out-of-band → maintenance window → apply → verify → rollback —183 see [TASKS.md](TASKS.md).**1844. The per-artifact specifics (which exact firmware slot to flip,185 which exact kernel parameter the operator needs, which exact186 container tag the operator must roll back to) live in the matching187 per-artifact skill's `## Safety policy` overlay. This skill does188 NOT name those specifics; the agent reaches them by routing back189 to the per-artifact skill after the meta-policy is satisfied.190191## Related skills192193- [`doca-version`](../doca-version/SKILL.md) — the four-way match194 rule and the host ↔ BlueField BFB ↔ container-tag pairing. Every195 hardware-touching change has a version dimension; this skill's196 `## Version compatibility` overlay is a 3-5 line redirect to197 `doca-version` for the body.198- [`doca-setup`](../doca-setup/SKILL.md) — env-class checks that199 precondition a hardware-touching change (hugepages, IOMMU mode,200 `pkg-config`, representor visibility). The pre-flight inventory in201 this skill's `## configure` cross-links to `doca-setup` for the202 env-class half of the inventory.203- [`doca-debug`](../doca-debug/SKILL.md) — the cross-cutting layered204 debug ladder. When a hardware-touching change goes wrong, the205 rollback ladder in this skill's `## debug` hands off to206 `doca-debug` once the rollback has restored a known state and the207 symptom now lives at a software layer.208- [`doca-structured-tools-contract`](../doca-structured-tools-contract/SKILL.md) —209 the JSON schemas the agent prefers when present. The210 `collect-host-state` / `collect-dpu-state` schemas are the211 structured form of this skill's pre-flight inventory; the agent212 uses them as the one-shot answer when the host has the helpers213 installed.214- [`doca-container-deployment`](../doca-container-deployment/SKILL.md) —215 the canonical container-deployment recipe shared across DOCA216 services. Several hardware-touching changes (BlueField cold217 reboot, BFB reflash) interrupt every hosted service container on218 the BlueField; the rollback path quotes the219 `doca-container-deployment` re-deploy shape.220- [`doca-programming-guide`](../doca-programming-guide/SKILL.md) —221 program-side preconditions (capability discovery,222 validate-before-commit). The post-change verification gate in this223 skill's `## run` cross-links there for the program-side224 observability surface that must be visible before any production225 workload moves.226- Per-artifact `## Safety policy` anchors in each in-bundle227 service / library / tool skill — e.g. the firmware-slot228 precondition in [`doca-argus`](../services/doca-argus/SKILL.md),229 [`doca-dms`](../services/doca-dms/SKILL.md),230 [`doca-firefly`](../services/doca-firefly/SKILL.md),231 [`doca-urom-svc`](../services/doca-urom-svc/SKILL.md); the232 device-touching libraries233 ([`doca-flow`](../libs/doca-flow/SKILL.md),234 [`doca-rdma`](../libs/doca-rdma/SKILL.md),235 [`doca-eth`](../libs/doca-eth/SKILL.md),236 [`doca-pcc`](../libs/doca-pcc/SKILL.md),237 [`doca-rmax`](../libs/doca-rmax/SKILL.md)); and the238 hardware-touching tools (e.g.239 [`doca-spcx-cc`](../tools/doca-spcx-cc/SKILL.md),240 [`doca-pcc-counters`](../tools/doca-pcc-counters/SKILL.md)).241 Every in-bundle artifact skill's `## Safety policy` overlays242 this meta-policy with artifact-specific safety. The cross-link is243 intentionally bidirectional: per-artifact skills link here for244 the meta-policy; this skill enumerates the in-bundle overlays in245 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)246 as "skills that overlay this meta-policy". The externally-247 productized analogs (`doca-virtio-net`, `doca-snap`, `doca-hbn`,248 BlueMan, DPF) are NOT in-bundle skills — their safety policies249 live in product documentation reached through250 [`doca-public-knowledge-map ## Externally-productized DOCA251 software`](../doca-public-knowledge-map/SKILL.md#externally-productized-doca-software--not-in-this-bundle-but-here-is-where-to-route).