with one click
traceability-gate
Enforces parent-link lineage across requirement layers.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Enforces parent-link lineage across requirement layers.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Flags risky shell commands and unsafe tree ops.
Detects high-confidence security risks in code.
Surfaces the dojo's non-negotiable prime directives.
Activates the dojo framework at the start of a session.
Plans multi-step work before writing code.
Captures lessons and promotes recurring patterns.
| name | traceability-gate |
| description | Enforces parent-link lineage across requirement layers. |
| tier | core |
| category | discipline |
| created_by | human |
| platforms | ["windows","macos","linux"] |
| tags | ["traceability","governance","togaf","gate"] |
| author | Andreas Wasita (@andreaswasita) |
The single governance gate for the TOGAF red thread: no artifact at layer N+1 may persist unless it carries a verified link to a parent at layer N. The skill does NOT elicit requirements and does NOT derive new ones; its only job is to refuse to let unlinked artifacts live.
requirements/** or any skill
that emits artifacts under it.optional-skills/ to
skills/ — learned skills must pass the same gate as live delivery.derive-nfr-from-driver or
derive-security-from-risk.requirements/<engagement>/.spec/artifact-schema.md defines the frontmatter contract.scripts/verify-traceability.sh is executable.The gate is allowed to be called against an empty engagement directory — it reports zero artifacts and exits 0. That is the seed state, not a failure.
# Full traceability check for one engagement
bash scripts/verify-traceability.sh requirements/<engagement>
# CI / strict mode — warnings (e.g. unratified) become failures
bash scripts/verify-traceability.sh --strict requirements/<engagement>
# Generate the RTM as a byproduct of the gate
bash scripts/gen-rtm.sh requirements/<engagement>
# Roll the gate into the dojo-wide gate
bash scripts/verify.sh # invokes run_traceability_checks
| Action | Tool | Notes |
|---|---|---|
| Run gate locally | bash scripts/verify-traceability.sh requirements/<engagement> | Exit 0 = lineage intact. |
| Run gate strict | bash scripts/verify-traceability.sh --strict … | CI default. |
| Regenerate RTM | bash scripts/gen-rtm.sh requirements/<engagement> | Writes docs/rtm-<engagement>.md. |
| Full dojo gate | bash scripts/verify.sh | Includes the traceability check. |
The gate walks every *.md under requirements/<engagement>/{BR,FR,NFR,SR,IR,TR}/
and parses YAML frontmatter only. The body is ignored — humans read
the body, the machine reads the schema.
For each artifact:
id, layer, title,
parent_ids, owner, measurable, ratified_by,
derivation_skill).id matches filename and starts with the correct layer prefix.layer is in {BR, FR, NFR, SR, IR, TR}.parent_ids entry resolves to an existing file in the same
engagement.layer is in the Valid parent layers column for
this artifact (see spec/artifact-schema.md §1).measurable: true for NFR/SR/TR.ratified_by empty → warning by default, failure in --strict.
CI runs --strict; the local loop does not, so iteration is fast.If the gate passes, regenerate the RTM. The RTM is never edited by hand — it is always a function of the artifact graph.
bash scripts/gen-rtm.sh requirements/<engagement>
# skip-traceability escape hatch. Every escape
hatch becomes the default within a quarter.TR straight to a BR because "it's obvious"
— the layers exist so the agent cannot quietly skip them.bash scripts/verify-traceability.sh requirements/sample exits 0.bash scripts/verify-traceability.sh --strict requirements/sample
exits 1 when at least one artifact has ratified_by: "".bash scripts/gen-rtm.sh requirements/sample writes a
non-empty docs/rtm-sample.md.bash scripts/verify.sh includes the traceability gate in its
output and the run is green.