From 29433f3c40a053ca7faca7d89bdb4b58904cb23d Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Tue, 29 Sep 2026 03:29:52 +0200 Subject: [PATCH] docs(10.1): record code review disposition --- .../10.1-REVIEW-DISPOSITION.md | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .planning/phases/10.1-runtime-admin-extension-point/10.1-REVIEW-DISPOSITION.md diff --git a/.planning/phases/10.1-runtime-admin-extension-point/10.1-REVIEW-DISPOSITION.md b/.planning/phases/10.1-runtime-admin-extension-point/10.1-REVIEW-DISPOSITION.md new file mode 100644 index 0000000..5fb9f3c --- /dev/null +++ b/.planning/phases/10.1-runtime-admin-extension-point/10.1-REVIEW-DISPOSITION.md @@ -0,0 +1,88 @@ +--- +phase: 10.1 +review: 10.1-REVIEW.md +titles: json +findings: + - id: CR-01 + severity: critical + disposition: open + title: "A fractional, exponent or overflowing number for an integer column is a 500, not a validation error" + - id: WR-01 + severity: warning + disposition: open + title: "A late schema response re-activates the previous controller's stylesheets over the current view" + - id: WR-02 + severity: warning + disposition: open + title: "Plugin stylesheets stay enabled on views that are not controller views" + - id: WR-03 + severity: warning + disposition: open + title: "The partial view-model guard (T-10.1-09) is shallow and easy to bypass" + - id: WR-04 + severity: warning + disposition: open + title: "`isJSONScalar` trusts `reflect.Kind`, not the JSON the value encodes to" + - id: WR-05 + severity: warning + disposition: open + title: "Form schema shows widgets the admin is not allowed to run" + - id: WR-06 + severity: warning + disposition: open + title: "The widget action route ignores the field's `context`" + - id: IN-01 + severity: info + disposition: open + title: "The widget-tag collision mitigation (T-10.1-11) only checks YAML" + - id: IN-02 + severity: info + disposition: open + title: "A toolbar action accepts `{\"values\": null}`" + - id: IN-03 + severity: info + disposition: open + title: "The OpenAPI annotations omit the 500 responses the new routes return" + - id: IN-04 + severity: info + disposition: open + title: "The gate's partial-template hygiene only scans `*/controllers/*/_*.htm`" + - id: IN-05 + severity: info + disposition: open + title: "Plugin admin assets are served without authentication" + - id: IN-06 + severity: info + disposition: open + title: "A form partial `?id=` needs writable-model capabilities" + - id: IN-07 + severity: info + disposition: open + title: "The `compilePartials` escape check has false positives" +open: 14 +total: 14 +recorded: 2026-09-29T01:29:52.513Z +--- + +# Phase 10.1: Code Review Disposition + +| Finding | Severity | Disposition | Source | +|---------|----------|-------------|--------| +| CR-01 | critical | open | - | +| WR-01 | warning | open | - | +| WR-02 | warning | open | - | +| WR-03 | warning | open | - | +| WR-04 | warning | open | - | +| WR-05 | warning | open | - | +| WR-06 | 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 | - | +| IN-07 | 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.