Files
summercms/.planning/phases/12-p-ytarium-api-collections-and-albums/12-REVIEW-DISPOSITION.md
2026-10-02 17:08:31 +02:00

3.1 KiB

phase, review, titles, findings, open, total, recorded
phase review titles findings open total recorded
12 12-REVIEW.md json
id severity disposition title
CR-01 critical open Client file extension outside `[a-z0-9]+` poisons every listing with a permanent 500 (T-12-16 bypass)
id severity disposition title
WR-01 warning open Public originals keep the client extension, so a valid image can be served as HTML (stored XSS on the uploads origin)
id severity disposition title
WR-02 warning open Lock-order inversion between AcceptInvitation and the resolver can deadlock on Postgres
id severity disposition title
WR-03 warning open Artist names without Latin letters collapse into one global artist row (and genres into one empty-slug genre)
id severity disposition title
WR-04 warning open Album writes answer 500 after their transaction has committed
id severity disposition title
WR-05 warning open Bulk create runs up to 5 synchronous Discogs downloads per row, with no per-request cap
id severity disposition title
IN-01 info open Two copies of the upload storage code
id severity disposition title
IN-02 info open A pre-existing album write path and a no-op GORM callback remain
id severity disposition title
IN-03 info open Accept writes the notification inside the accept transaction, unlike PHP and the doc comment
id severity disposition title
IN-04 info open A collection name containing CR or LF silently breaks its invitation mails
id severity disposition title
IN-05 info open The trim and numeric helpers are re-implemented in several places
id severity disposition title
IN-06 info open Global mutable `models.MarketCurrencyFunc` is set at Boot without synchronization
12 12 2026-10-02T15:08:31.458Z

Phase 12: 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 -
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.