[M3] POST /slabs/{id}/review accepts owner overrides but never persists them (REVIEW-25, METADATA-50) #80
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
REVIEW-25says the owner may override the price and the override sticks;METADATA-50says typed values always win over inferred values. The review endpoint reads those edits, merges them into an in-memory dict, and returns them — but never writes to the database. The override survives exactly one response.Found in a read-only review of
main@b99cbdf(2026-09-20). 63 backend tests pass and both docs gates pass at that commit; these are gaps the green suite does not cover.Observed evidence
backend/review.py:142-147merges the editable keys into the local dict;backend/review.py:159-174derives title/short_description/price from the merged dict. NoUPDATE/INSERTfollows — the only writes in the file are none; the function ends by returning a dict (:175-183).Reproduction against the real app (temp SQLite, no network):
The same applies to
title,short_description,description,sku,price_source,content_source.backend/tests/test_review.py:78-87asserts only the response body (body["price_suggestion"] == 184.0,body["price"] == 184.0), which is why the suite stays green over a broken requirement.Acceptance
POST /reviewpersists the merged edits (and bumpsserver_rev), or it is a pure compute endpoint and the override path isPUT /slabs/{id}— in which case the request schema should stop advertising those keys.price_sourcelands on the value the schema allows (override), not a free string — the column has a CHECK constraint and an out-of-domain value currently raises a rawsqlite3.IntegrityError.Related
#77(Review/Publish UI rebuild — the override control belongs in that form)