docs(19.6.1): record code review disposition

This commit is contained in:
Jakub Zych
2026-10-22 12:36:13 +02:00
parent d5da300e24
commit d6a6e7ac60

View File

@@ -0,0 +1,68 @@
---
phase: 19.6.1
review: 19.6.1-REVIEW.md
titles: json
findings:
- id: CR-01
severity: critical
disposition: open
title: "Roles screen lets a non-superuser rename or create a role onto a code with code-declared grants (D-07 ceiling bypass, self-escalation)"
- id: WR-01
severity: warning
disposition: open
title: "D-07/D-19 ceilings ignore a scoped personal API token's scope"
- id: WR-02
severity: warning
disposition: open
title: "Stored override values other than 1/-1 are dropped on every save, re-granting what they removed"
- id: WR-03
severity: warning
disposition: open
title: "Record actions contributed to the Administrators screen bypass D-19 (outranking) and D-09 (last superuser)"
- id: IN-01
severity: info
disposition: open
title: "Last-superuser guard silently depends on READ COMMITTED"
- id: IN-02
severity: info
disposition: open
title: "Re-deleting a soft-deleted administrator reports success and bumps tokens"
- id: IN-03
severity: info
disposition: open
title: "Role code uniqueness is a check-then-insert without a lock"
- id: IN-04
severity: info
disposition: open
title: "Role delete counts holders without locking against concurrent assignment"
- id: IN-05
severity: info
disposition: open
title: "`toggleOn` reads unknown switch encodings as \"off\""
- id: IN-06
severity: info
disposition: open
title: "Role picker on your own record is editable in the SPA but always refused"
open: 10
total: 10
recorded: 2026-10-22T10:36:13.024Z
---
# Phase 19.6.1: Code Review Disposition
| Finding | Severity | Disposition | Source |
|---------|----------|-------------|--------|
| CR-01 | critical | open | - |
| WR-01 | warning | open | - |
| WR-02 | warning | open | - |
| WR-03 | warning | open | - |
| IN-01 | info | open | - |
| IN-02 | info | open | - |
| IN-03 | info | open | - |
| IN-04 | info | open | - |
| IN-05 | info | open | - |
| IN-06 | info | open | - |
Dispositions: `open` (recorded, not yet triaged), `fixed`, `skipped`, `deferred`.
Set `deferred` by hand and put the reason in the Source cell; both are preserved. A `|` in the reason is kept as prose and escaped on the next run.
Re-running the gate keeps every row it can. A row the current review no longer reports is kept and its Source cell flagged, so a finding does not leave this record silently. ONE exception: when a finding id is REUSED by a different finding, the earlier decision cannot keep a row — the id is taken — and it is dropped. A RECORDED decision (anything but `open`) is named on the console when that happens; a row still at `open` is replaced silently, because `open` records no decision to lose.