94 lines
3.7 KiB
Markdown
94 lines
3.7 KiB
Markdown
---
|
|
phase: 14
|
|
review: 14-REVIEW.md
|
|
titles: json
|
|
findings:
|
|
- id: CR-01
|
|
severity: critical
|
|
disposition: fixed
|
|
title: "Album writes after slow Discogs I/O save every column from a stale struct, silently reverting concurrent edits"
|
|
- id: WR-01
|
|
severity: warning
|
|
disposition: fixed
|
|
title: "A stale CSV match pass can cancel, advance or fork a remapped import (the race D-10 claims to close)"
|
|
- id: WR-02
|
|
severity: warning
|
|
disposition: fixed
|
|
title: "The anonymous feedback upload keeps an attacker-chosen file extension in public storage"
|
|
- id: WR-03
|
|
severity: warning
|
|
disposition: fixed
|
|
title: "Credential-test routes are unthrottled oracles for third-party keys (parity security hole)"
|
|
- id: WR-04
|
|
severity: warning
|
|
disposition: fixed
|
|
title: "The \"write-only\" admin AI key can be redirected to any host by changing base_url"
|
|
- id: WR-05
|
|
severity: warning
|
|
disposition: fixed
|
|
title: "`golem:import-settings` silently drops models from a repeater saved with non-sequential keys"
|
|
- id: WR-06
|
|
severity: warning
|
|
disposition: fixed
|
|
title: "The G15Office sync job is not idempotent, and a retry files duplicate tasks"
|
|
- id: IN-01
|
|
severity: info
|
|
disposition: open
|
|
title: "sunscreen does not scrub the Discogs token shape or struct fields"
|
|
- id: IN-02
|
|
severity: info
|
|
disposition: open
|
|
title: "tide sidecar masking accepts a partly masked credential and prints two unredacted URLs"
|
|
- id: IN-03
|
|
severity: info
|
|
disposition: open
|
|
title: "The match job's re-dispatch delay overflows on a huge Retry-After"
|
|
- id: IN-04
|
|
severity: info
|
|
disposition: open
|
|
title: "`security.AllowedHosts` ignores a string-valued config key"
|
|
- id: IN-05
|
|
severity: info
|
|
disposition: open
|
|
title: "The G15Office task id from the response is concatenated into the request path unescaped"
|
|
- id: IN-06
|
|
severity: info
|
|
disposition: open
|
|
title: "embed.js `escapeHtml` is used in attribute context without escaping quotes (parity)"
|
|
- id: IN-07
|
|
severity: info
|
|
disposition: open
|
|
title: "Job cancellation inside the mapping and cancel transactions is not rolled back with them"
|
|
- id: IN-08
|
|
severity: info
|
|
disposition: open
|
|
title: "`wishlistReleaseMatchRules` aliases `releaseMatchRules`' backing array"
|
|
open: 8
|
|
total: 15
|
|
recorded: 2026-10-04T06:13:28.660Z
|
|
---
|
|
|
|
# Phase 14: Code Review Disposition
|
|
|
|
| Finding | Severity | Disposition | Source |
|
|
|---------|----------|-------------|--------|
|
|
| CR-01 | critical | fixed | 14-REVIEW-FIX.md |
|
|
| WR-01 | warning | fixed | 14-REVIEW-FIX.md |
|
|
| WR-02 | warning | fixed | 14-REVIEW-FIX.md |
|
|
| WR-03 | warning | fixed | 14-REVIEW-FIX.md |
|
|
| WR-04 | warning | fixed | 14-REVIEW-FIX.md |
|
|
| WR-05 | warning | fixed | 14-REVIEW-FIX.md |
|
|
| WR-06 | warning | fixed | 14-REVIEW-FIX.md |
|
|
| 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 | - |
|
|
| IN-08 | 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.
|