Skip to content

fix(risk-scorer): deferral is not a control - #406

Open
tompahoward wants to merge 1 commit into
mainfrom
deferral-is-not-a-control
Open

fix(risk-scorer): deferral is not a control#406
tompahoward wants to merge 1 commit into
mainfrom
deferral-is-not-a-control

Conversation

@tompahoward

Copy link
Copy Markdown
Member

Closes #405.

Adds a Deferral is not a control rule to the pipeline agent, placed directly beside Monitoring is not a control because they are the same shape: both are things that look like controls but do not exercise the failure before it ships. Monitoring shortens time-to-notice. Deferral relocates the hazard.

The rule

A control removes or bounds a hazard. A deferral relocates it. Holding work back, splitting a commit to land part of it later, or routing a change onto a branch does NOT reduce that work's risk. It moves the hazard outside the window you are scoring, which is not the same thing.

When a proposed mitigation moves work OUT of the current action rather than removing a hazard, score the end state: the deferred action, plus any additional applies, deploys or releases the split introduces. Call it mitigation only if that total is lower.

Scoping

Deliberately bounded so it does not forbid legitimate splits. Separating an unrelated change out of a risky commit genuinely narrows blast radius without deferring anything. The test written into the rule is whether the end state still requires the held-back action: if it does, that is deferral; if not, that is separation.

The rule also names the direction of the bias it corrects, because that is what makes it actionable rather than abstract: uncorrected, per-action scoring favours smaller batches per action, which is the opposite of what teams practising trunk-based development want.

What this does not include

No paired promptfoo eval. The existing harness at packages/risk-scorer/agents/eval/ is scoped to the external-comms agent's credibility axis, and there is no pipeline-agent eval to extend, so the R009 prose-surface floor is not discharged by this PR. Building one is a larger piece of work and I did not want to bundle it. Say if you would rather this waited for that.

Prose is em-dash free per the house convention.

The pipeline agent scores the action in front of it, so deferring work
moves the hazard outside the scored window and any hold-this-back
recommendation scores lower on the current hop regardless of whether
total risk fell. There is no way to price un-integrated work.

Adds the rule beside 'Monitoring is not a control', which is the same
shape: both are things that look like controls but do not exercise the
failure before it ships. Monitoring shortens time-to-notice; deferral
relocates the hazard.

Scoped so it does not over-apply. Separating an unrelated change out of a
risky commit genuinely narrows blast radius, so the test is whether the
end state still requires the held-back action. If it does, that is
deferral; if not, that is separation.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

risk-scorer: deferral is rated as mitigation, because scoring is per-action rather than per-path

1 participant