Severity: medium · Category: protocol defect
Evidence. packages/app/src/authoring.ts: isOpenElementRedirect accepts any { name: 'OpenElementRedirect', location: string, status: number } — a shaped object with status: 200 or an arbitrary status takes the redirect channel, bypassing the constructor's 3xx whitelist (ADR-0121 §3).
Fix. Validate the status against the same {301,302,303,307,308} set in the duck-type branch.
Filed from the 0.42 round-2 review (docs/audit/2026-07-28-alpha5-round2-review.md). Target line: 0.42.0-alpha.6.
Severity: medium · Category: protocol defect
Evidence.
packages/app/src/authoring.ts:isOpenElementRedirectaccepts any{ name: 'OpenElementRedirect', location: string, status: number }— a shaped object withstatus: 200or an arbitrary status takes the redirect channel, bypassing the constructor's 3xx whitelist (ADR-0121 §3).Fix. Validate the status against the same {301,302,303,307,308} set in the duck-type branch.
Filed from the 0.42 round-2 review (docs/audit/2026-07-28-alpha5-round2-review.md). Target line: 0.42.0-alpha.6.