Skip to content

Correct HI:2.0.2 value definitions to match the DT_HI:1.0.0 decision table - #1254

Open
sandakelum97 wants to merge 1 commit into
CERTCC:mainfrom
sandakelum97:fix/human-impact-prose-table-sync
Open

sandakelum97 wants to merge 1 commit into
CERTCC:mainfrom
sandakelum97:fix/human-impact-prose-table-sync

Conversation

@sandakelum97

Copy link
Copy Markdown

What

Corrects the Low, Medium and High value definitions of ssvc:HI:2.0.2 in src/ssvc/decision_points/ssvc/human_impact.py so that they describe the same mapping as the ssvc:DT_HI:1.0.0 decision table. Very High was already correct and is unchanged.

No decision table, mapping or outcome is modified. This is a documentation correction only: the table's logic is authoritative and stays exactly as it is, per @sei-vsarvepalli's comment on #1227.

Value Before After
Low Safety Impact:(Negligible) AND Mission Impact:(Degraded OR Crippled) Safety Impact:(Negligible OR Marginal) AND Mission Impact:(Degraded OR MEF Support Crippled)
Medium (Safety Impact:Negligible AND Mission Impact:MEF Failure) OR (Safety Impact:Marginal AND Mission Impact:(Degraded OR Crippled)) (Safety Impact:(Negligible OR Marginal) AND Mission Impact:MEF Failure) OR (Safety Impact:Critical AND Mission Impact:Degraded)
High (Safety Impact:Critical AND Mission Impact:(Degraded OR Crippled)) OR (Safety Impact:Marginal AND Mission Impact:MEF Failure) Safety Impact:Critical AND Mission Impact:(MEF Support Crippled OR MEF Failure)
Very High Safety Impact:Catastrophic OR Mission Impact:Mission Failure unchanged

The regenerated files under data/ are included, produced by the project's doctools regeneration step, as required for fork pull requests by .github/workflows/run_doctools.yml.

Why

As set out in #1218 and #1227, the published prose and the published decision table disagreed in four of the sixteen Safety Impact x Mission Impact cells, and a fifth combination (Critical + MEF Failure) matched none of the four value definitions at all, so it had no defined value in the text.

@ahouseholder's root cause note on #1218 describes the sequence: the documentation was written, the decision table was implemented, the table was corrected during implementation, and the documentation was not updated. This pull request completes that last step.

Two secondary points worth recording:

Crippled is not a value name. The previous definitions used Crippled as shorthand. The ssvc:MI:2.0.0 value is named MEF Support Crippled. The corrected text uses the full value name, so the definitions can be checked mechanically against the value enumerations. Happy to revert to the shorthand if the shorter form is preferred for readability.

None was already removed in 2.0.2. The 2.0.1 to 2.0.2 bump removed references to the retired ssvc:MI value None. That change did not touch the cells in question, so this discrepancy predates 2.0.2 and is present in 2.0.1 as well. 2.0.1 is left unchanged here as historical record.

Verification

I wrote a short script that parses the four value definition strings and evaluates them against all sixteen cells of ssvc:DT_HI:1.0.0. It does not hand-encode the logic, so it tests the published text rather than a reader's interpretation of it. Happy to share it if useful.

Before this change, five cells fail:

Safety        Mission               Table  Prose   Status
---------------------------------------------------------
Marginal      Degraded              L      M       DISAGREES
Marginal      MEF Support Crippled  L      M       DISAGREES
Marginal      MEF Failure           M      H       DISAGREES
Critical      Degraded              M      H       DISAGREES
Critical      MEF Failure           H      -       NO MATCH

After this change, all sixteen cells agree, and no cell satisfies more than one value definition.

Also run locally:

  • black@25.1.0 --check on the modified file: clean
  • doctools regeneration: only definition strings and generatedAt timestamps change
  • pytest: full suite passes

One question, not addressed by this PR

Closing these two issues will also close the open question raised at the end of #1227, so recording it here.

Under DT_HI:1.0.0, Safety Impact Marginal produces the same Human Impact as Negligible for every Mission Impact value. Safety Impact only changes the Human Impact outcome at Critical or Catastrophic, so a four-value decision point behaves as three values in the deployer tree. This correction makes that visible in the text rather than changing it.

If that collapse is intended, no action is needed. If it is not, it is a separate question about the table rather than the prose, and I am happy to open a new issue for it so it is not lost when these two close.

@sandakelum97

Copy link
Copy Markdown
Author

Attaching the verification script referenced above. It takes no arguments and no dependencies beyond the repo itself:

PYTHONPATH=src python verify_human_impact.py

It parses the four HI:2.0.2 value definition strings and evaluates them against all sixteen cells of DT_HI:1.0.0, exiting non-zero on any disagreement, no-match, or ambiguous cell. On main it reports 5 of 16 failing; on this branch, all 16 agree.

verify_human_impact.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant