You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ART M4: review — full paging, include/exclude, versioned cell edits (BR-25, BR-26, BR-27) #108
Review is recorded now and applied in M6. M4 records include and exclude decisions and cell edits against the stored upload (M3's source_rows), and everyone in the tenant can see them. The table imported at upload time doesn't change. M6's approval and staged import will import the reviewed version.
Who reviews:reviewer and tenant_admin may decide rows and edit cells. Everyone with read_rows can view.
A reason is required for every decision and edit. The API refuses an empty one.
Parts
M4a (API and database):
Insert-only row_decisions and cell_edits, where the latest entry wins and the history is kept.
The column types each upload used are stored, so every row can be validated, not only the first 200 failures.
GET /api/csv/uploads/{id}/rows pages through every row, giving original and current values, validation errors and the row's decision.
Endpoints to record a decision and a cell edit, plus a row's history. Each change is also written to the audit log, with before and after values.
M4b (frontend): a review screen that pages through every row, with include and exclude, cell edits and the history.
Activity
amar-python commentedon Oct 28, 2026
Decisions by the product owner, 28 Oct 2026
source_rows), and everyone in the tenant can see them. The table imported at upload time doesn't change. M6's approval and staged import will import the reviewed version.reviewerandtenant_adminmay decide rows and edit cells. Everyone withread_rowscan view.Parts
row_decisionsandcell_edits, where the latest entry wins and the history is kept.GET /api/csv/uploads/{id}/rowspages through every row, giving original and current values, validation errors and the row's decision.Generated by Claude Code
fix(api): allow PUT in CORS so the browser can send review changes (#108
test(review): positive and negative test cases for the review API (#108)
Merge pull request #142 from amar-python/feat/108-m4a-review-api
Merge pull request #143 from amar-python/feat/108-m4b-review-screen