How do you record a key-rotation check that fully satisfies one framework's clause but only partly another?
answer
- edges have strength, not just existence
- closed vocabulary, never free text
- name the remainder and its owner
- the missing half is often a document
- partial must never aggregate into covered
basics
~20 sGive every mapping edge an explicit strength, and on anything less than full, name the remainder: what else must be true and which artifact carries it. Partial edges must render as partial, never as a green tick.
solid answer
~50 sRecord strength on the edge, not just its existence. A check asserting every key was rotated within 365 days is a full answer to a clause that names a fixed maximum interval, but only a partial answer to a clause that defers to a cryptoperiod *you* define — there the other half is the policy document fixing the number, and the edge is only true while that document says 365. Against a broad key-management clause covering generation, storage, distribution and destruction, rotation is one slice of several. So each edge gets a strength from a closed set — full, partial, supporting — plus a named remainder and an owner for closing it. The failure mode is aggregation: three edges of three different strengths rendered as one green tick, so the report says covered and nobody can point at which edge was the weak one until the auditor does.
go deeper
Understand that a check may only answer part of a framework clause, and that the mapping should say so rather than implying the clause is fully handled.
Explain the reasons an edge is partial — it depends on a document, it covers one slice of a multi-part clause, or it only applies to some systems — and why a closed strength vocabulary beats notes.
Show the aggregation trap: partial edges collapsing into a coverage percentage, and the fix of counting only full edges while reporting remainders with owners.
Own the asymmetry. Argue why an optimistic mapping costs the credibility of the whole file, and set the expectation that a less flattering dashboard is the deliverable.
## The edge is a claim, and claims have strength The naive crosswalk records existence: check X relates to clause Y. That is enough to route a finding into a report and nothing else. The moment someone reads the report as coverage — and someone always does — the missing attribute becomes the whole problem, because *related to* silently renders as *satisfies*. So the edge carries a strength, drawn from a **closed vocabulary** rather than free-text notes. The exact tokens matter less than the discipline; three levels is usually enough: - **Full** — the check's passing result is the answer to the clause for the components in scope. - **Partial** — the check answers a defined portion; something else must be true for the clause to hold. - **Supporting** — the check is corroborating evidence, not the answer. Free text loses this. "Mostly covers, see notes" cannot be aggregated, filtered or diffed, and it is invisible to whoever renders the dashboard. ## Three different reasons an edge is partial The rotation example produces all three, which is why it is worth working through. **1. Partial by dependence on a document.** A clause that requires keys be changed at the end of a cryptoperiod *you* define does not name a number. Your check tests 365 days. The check plus the standard that says 365 answers the clause; the check alone does not. If someone edits the standard to 24 months and nobody edits the rule, the edge silently becomes false while both artifacts still look healthy. The remainder here is a document, and it belongs in the edge as a link, not in someone's memory. **2. Partial by breadth.** A clause covering cryptographic key establishment and management spans generation, distribution, storage, escrow, rotation and destruction. A rotation check answers one of those. Marking that edge full is a claim you cannot defend in a walkthrough, and the auditor's next question — show me destruction — arrives with no warning. **3. Partial by conditional applicability.** Some clauses bite only for a subset of systems. The edge is full *within* that subset and silent outside it. That condition belongs on the edge as a qualifier; without it the same green tick means two different things in two reports. ## Aggregation is where honesty dies An edge with strength is only useful if the strength survives the pipeline that turns edges into a percentage. The classic mistake is counting mapped clauses: every clause with any edge counts as covered, so a crosswalk full of partials renders as 100%. Two rules prevent it: - Coverage counts **only fully satisfied clauses** in the numerator; partial is reported as its own category with the remainders listed. - **No edge may be silent about strength.** An absent value must not default to full. Make the field required, and make CI reject an edge without it. The consequence is a less flattering dashboard, and that is the point. A control owner who knows their nineteen partial edges and who owns each remainder is in a far stronger position than one holding a green tick they cannot explain. ## Who decides, and what it costs to be wrong The control owner decides the strength with the clause text in front of them, and the decision is reviewed like any other claim in the repository. Being wrong in the optimistic direction is expensive: an auditor tests the strongest claim you made, and a full edge that turns out to be partial does not merely fail that clause — it makes every other edge in the file suspect, because you have demonstrated the mapping is not trustworthy. Being wrong pessimistically costs an argument and some remediation work that was probably worth doing. That asymmetry is the whole reason to write partial down. A crosswalk is a set of claims about which you will be examined; the ones you hedged honestly cost you nothing, and the ones you rounded up cost you the file's credibility.
- Your coverage report shows 100% because every partial edge counts as covered. What do you change?Make coverage count only fully satisfied clauses, and report partial as its own category with each remainder named. Then make strength a required field so an edge cannot default to full by omission, and fail the crosswalk's CI check when one is missing. The number gets worse and becomes usable.
- Who decides whether an edge is full or partial, and how is that decision reviewed?The control owner, with the clause text open, and the decision lands as a diff reviewed like any other claim. Optimistic edges are the expensive error: an auditor tests your strongest claim first, and a full edge that proves partial makes the rest of the mapping suspect rather than just failing one clause.
- The standard that fixes the rotation interval is edited from 365 days to 24 months. What happens to the edge?It becomes false while everything still looks healthy — the check passes at 365 and the document says 24 months, so nothing is failing, but the mapping no longer describes reality. That is why a document-dependent edge links the document explicitly, and why changing that document should touch the crosswalk in the same review.
saying these in an interview costs you the question
- Marks every edge fully satisfied to keep the report green
- Records mapping strength as free-text notes
- Lets an edge with no strength default to satisfied
- Claims one rotation check closes a whole key-management clause
- Counts partially mapped clauses in a coverage percentage