Skip to content

Commit 1143504

Browse files
committed
qa(checklist): record the a43405d re-measure of the batch and validation clauses
Both clauses stay red at a43405d, as their cards (#24781, #24782) are still open. The unevaluable-rule verify now reads each log entry to its end: the predicate evaluator's entry spans lines and its verdict follows the CEL caret excerpt. Claude-Session: https://claude.ai/code/session_01MRkuLGosywLTY6EMcP6fGK Co-authored-by: Claude <noreply@anthropic.com>
1 parent b393496 commit 1143504

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎docs/qa/platform-checklist/areas/api-backend.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"default maxBatchSize (200 unless RestServerConfig.batch overrides)"
2323
],
2424
"knownGaps": [
25-
"acceptance[5] (an empty-string id on an update or delete op) stays red until #24781 lands: the door's up-front id check tests `op.id == null` only (packages/rest/src/batch-routes.ts), so `\"id\": \"\"` reaches the engine and answers 500 — DATABASE_ERROR for update, INTERNAL_ERROR for delete. Measured at 580fd4ed (QA run #24779) and again at MAIN_SHA. When #24781's fix merges, re-run the clause and drop this line"
25+
"acceptance[5] (an empty-string id on an update or delete op) stays red until #24781 lands: the door's up-front id check tests `op.id == null` only (packages/rest/src/batch-routes.ts), so `\"id\": \"\"` reaches the engine and answers 500 — DATABASE_ERROR for update, INTERNAL_ERROR for delete. Measured at 580fd4ed (QA run #24779) and again at a43405d596 (#24802). When #24781's fix merges, re-run the clause and drop this line"
2626
]
2727
},
2828
"steps": [

‎docs/qa/platform-checklist/areas/records-forms.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,7 +1927,7 @@
19271927
],
19281928
"knownGaps": [
19291929
"no showcase rule declares severity:'info' — it shares the identical non-error branch with 'warning' (rule-validator.ts tests `severity === 'error'` and logs everything else), so the warning leg is the driven proof; author a scratch info rule only if a distinct observation is wanted, and record which severities were actually driven",
1930-
"acceptance[5] stays red until #24782 lands: the unevaluable warning rule's write answers 201 and persists (correct), but the server log prints two lines naming the rule that both say \"write rejected\" — the predicate evaluator's fail-closed sentence, emitted before severity is consulted, and the advisory branch's warn, which embeds that violation message (packages/objectql/src/validation/rule-validator.ts). Measured at 580fd4ed (QA run #24779) and again at MAIN_SHA. When #24782's fix merges, re-run the clause and drop this line"
1930+
"acceptance[5] stays red until #24782 lands: the unevaluable warning rule's write answers 201 and persists (correct), but the server log prints two lines naming the rule that both say \"write rejected\" — the predicate evaluator's fail-closed sentence, emitted before severity is consulted, and the advisory branch's warn, which embeds that violation message (packages/objectql/src/validation/rule-validator.ts). Measured at 580fd4ed (QA run #24779) and again at a43405d596 (#24802). When #24782's fix merges, re-run the clause and drop this line"
19311931
]
19321932
},
19331933
"variants": [
@@ -1982,7 +1982,7 @@
19821982
{
19831983
"clause": "an UNEVALUABLE severity:'warning' rule lets the write land, and no log line beside it reports a rejection: the write answers 2xx, the row persists, and no server-log line naming the rule says the write was rejected or that the rule failed closed — the log must not state the opposite of what the server did. Red until #24782 lands",
19841984
"oracle": "log",
1985-
"verify": "step-7 qa_vr_probe write: status 201 and a re-read finding the row; then every log line naming qa_unevaluable_warn — none may contain \"write rejected\" or \"fails closed\" (the fail-closed sentence belongs to the error-severity path; rule-validator.ts header: an unevaluable warning/info rule is logged, never thrown). Score the absence of the rejection wording, not whichever replacement sentence #24782 picks; a line saying the rule could not be evaluated is expected and passes. Control: the qa_vr_probe_err write answers 400 VALIDATION_FAILED naming qa_unevaluable_err and persists nothing — there the rejection wording is true",
1985+
"verify": "step-7 qa_vr_probe write: status 201 and a re-read finding the row; then every log entry naming qa_unevaluable_warn, read to its end — the predicate evaluator's entry spans lines (it embeds the CEL source with a caret) and its verdict sits after the caret — none may contain \"write rejected\" or \"fails closed\" (the fail-closed sentence belongs to the error-severity path; rule-validator.ts header: an unevaluable warning/info rule is logged, never thrown). Score the absence of the rejection wording, not whichever replacement sentence #24782 picks; a line saying the rule could not be evaluated is expected and passes. Control: the qa_vr_probe_err write answers 400 VALIDATION_FAILED naming qa_unevaluable_err and persists nothing — there the rejection wording is true",
19861986
"evidence": "both responses + both re-reads + every log line naming either rule, quoted"
19871987
}
19881988
],

0 commit comments

Comments
 (0)