Skip to content

fix(scorecard): reject gate entries with neither result nor reason - #2

Merged
maxymlyskov merged 1 commit into
mainfrom
fix/scorecard-malformed-gate
Sep 30, 2026
Merged

maxymlyskov merged 1 commit into
mainfrom
fix/scorecard-malformed-gate

Conversation

@maxymlyskov

Copy link
Copy Markdown
Owner

A gate whose RESULT object was stored flat on the entry, instead of under
.result, scored as a full-credit "proxy [A]" row. A failing fan-out recorded
as {ok, pass: false, code: 'MISSED', tier: 'A'} produced 100 / HIGH. Found on
the first real run: three gates recorded flat printed 0 / NOT SHIPPABLE on the
hard rows and "proxy [A]" on the weighted ones, and neither said why.

The scorecard now checks every gate entry except QA before scoring. An entry
needs a reason (proxy or n/a) or a result object; anything else is
BAD_RECORD, exit 2, with the gates named. The input that used to pass wrongly
is the flat failing fan-out above; the new test fails on it before this
change.

A gate whose RESULT object was stored flat on the entry, instead of under
.result, scored as a full-credit "proxy [A]" row. A failing fan-out recorded
as {ok, pass: false, code: 'MISSED', tier: 'A'} produced 100 / HIGH. Found on
the first real run: three gates recorded flat printed 0 / NOT SHIPPABLE on the
hard rows and "proxy [A]" on the weighted ones, and neither said why.

The scorecard now checks every gate entry except QA before scoring. An entry
needs a reason (proxy or n/a) or a result object; anything else is
BAD_RECORD, exit 2, with the gates named. The input that used to pass wrongly
is the flat failing fan-out above; the new test fails on it before this
change.
@maxymlyskov
maxymlyskov merged commit 6ddc2bd into main Sep 30, 2026
1 check passed
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.

1 participant