Skip to content

Commit f967535

Browse files
committed
fix: enforce bidirectional verified/verdict/admission consistency
1 parent e9a2811 commit f967535

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

.github/workflows/smoke-test.yml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ jobs:
5353
if [ "$VERDICT" = "VERIFIED" ] && [ "$ADMISSION" = "ADMIT" ]; then
5454
[ "$VERIFIED" = "true" ] || { echo "Consistency violation: VERIFIED+ADMIT must have verified=true" >&2; exit 1; }
5555
fi
56+
if [ "$VERIFIED" = "true" ]; then
57+
[ "$VERDICT" = "VERIFIED" ] || { echo "Consistency violation: verified=true requires verdict=VERIFIED" >&2; exit 1; }
58+
[ "$ADMISSION" = "ADMIT" ] || { echo "Consistency violation: verified=true requires admission=ADMIT" >&2; exit 1; }
59+
fi
5660
fi
5761
fi
5862
@@ -166,14 +170,17 @@ jobs:
166170
if [[ ! "$VC_PROOF_REF" =~ ^sha256:[a-f0-9]{64}$ ]]; then
167171
echo "Invalid proof_ref format: $VC_PROOF_REF" >&2; exit 1
168172
fi
173+
else
174+
[ -z "$VC_PROOF_REF" ] || { echo "$VC_VERDICT must have an empty proof_ref" >&2; exit 1; }
169175
fi
170-
if [ -n "$VERDICT" ]; then
171-
[ "$VERDICT" = "$VC_VERDICT" ] || { echo "Scalar verdict ($VERDICT) != VC verdict ($VC_VERDICT)" >&2; exit 1; }
172-
fi
173-
if [ -n "$ADMISSION" ]; then
174-
[ "$ADMISSION" = "$VC_ADMISSION" ] || { echo "Scalar admission ($ADMISSION) != VC admission ($VC_ADMISSION)" >&2; exit 1; }
175-
fi
176-
if [ -n "$PROOF_REF" ]; then
177-
[ "$PROOF_REF" = "$VC_PROOF_REF" ] || { echo "Scalar proof_ref != VC proof_ref" >&2; exit 1; }
176+
EXPECTED_VERIFIED="false"
177+
if [ "$VC_VERDICT" = "VERIFIED" ] && [ "$VC_ADMISSION" = "ADMIT" ]; then
178+
EXPECTED_VERIFIED="true"
178179
fi
180+
[ "$VERIFIED" = "$EXPECTED_VERIFIED" ] || { echo "Consistency violation: verified=$VERIFIED but expected $EXPECTED_VERIFIED for verdict=$VC_VERDICT admission=$VC_ADMISSION" >&2; exit 1; }
181+
[ -n "$VERDICT" ] || { echo "Missing scalar verdict when VC is present" >&2; exit 1; }
182+
[ -n "$ADMISSION" ] || { echo "Missing scalar admission when VC is present" >&2; exit 1; }
183+
[ "$VERDICT" = "$VC_VERDICT" ] || { echo "Scalar verdict ($VERDICT) != VC verdict ($VC_VERDICT)" >&2; exit 1; }
184+
[ "$ADMISSION" = "$VC_ADMISSION" ] || { echo "Scalar admission ($ADMISSION) != VC admission ($VC_ADMISSION)" >&2; exit 1; }
185+
[ "$PROOF_REF" = "$VC_PROOF_REF" ] || { echo "Scalar proof_ref ($PROOF_REF) != VC proof_ref ($VC_PROOF_REF)" >&2; exit 1; }
179186
echo "VC v1.0 contract validated — all checks passed"

0 commit comments

Comments
 (0)