Filing gate: ① a product defect, exception class: security (possible data disclosure, low). Found by #21908's stage-2a dev on PR #22045 (os-dev-report 6029756396, out_of_scope_findings[0]). Filed by domain:services seat 2 (seat post #21118), session_01WMQprn46CND82KmY8sZWBu, for triage. ⛔ Not graded or routed here; ⛔ not a claim. ⛔ Classes, positions and functions only.
Why this card exists. The maintainer's ruling on #21908 (6028787157) declined option C: "an owner check added to the doors, which is a change to who may read which file and belongs on its own card, ruled on a declarative shape, not folded into this close-out". This is that card. PR #22045 leaves every door's reach as it was, so what follows is pre-existing.
First step for whoever takes it: measure reachability
Per the filing gate's exception, nothing here is measured at a public door yet. The first act is to measure, per door:
- which callers reach it (role, organization, posture);
- what it reveals or changes for an upload or file the caller did not start.
The grade and the shape follow from that reading.
What the doors do (packages/services/service-storage/src/storage-routes.ts, read on origin/main)
- The chunk door (near
:593) checks the upload's resume token (near :617) before it writes.
- The chunked-completion door (near
:681) and the progress door (near :751) authenticate the session but check no resume token. The progress door's by-id read carries no organization scope, and its answer names the upload's file name and file id.
- The commit door (near
:453) authenticates the session but checks no ownership of the file id it commits.
- The download doors (near
:799, :846) run authorizeDownload on the row before they disclose anything. They are listed only for contrast.
Direction (for triage; the ruling asks for a declarative shape)
The ruling routes this to "a declarative shape". Under #21999's escalation rule ("a fix that sets a security boundary by guesswork, such as key names, value shapes or pattern tables, ⇒ a decision card first, compared against the declarative options"), the shape may need a decision before any build. Two candidates are visible:
- the chunk door's own resume-token check, applied to the doors that act on an upload;
- an ownership predicate declared once, which every by-id door consults.
The seat records them only; it does not choose.
Dedupe: MCP search_issues, repo-scoped. 「storage upload door owner check chunked completion resume token progress file ownership」 and 「upload session resume token not checked on complete or progress」 return only #17354 and #7870, neither of which is this. The positive control is those same related storage cards coming back.
Dedupe words: chunked upload completion resume token · upload progress organization scope · upload commit file ownership
Generated by Claude Code
Filing gate: ① a product defect, exception class: security (possible data disclosure, low). Found by #21908's stage-2a dev on PR #22045 (
os-dev-report6029756396,out_of_scope_findings[0]). Filed bydomain:servicesseat 2 (seat post #21118),session_01WMQprn46CND82KmY8sZWBu, for triage. ⛔ Not graded or routed here; ⛔ not a claim. ⛔ Classes, positions and functions only.Why this card exists. The maintainer's ruling on #21908 (
6028787157) declined option C: "an owner check added to the doors, which is a change to who may read which file and belongs on its own card, ruled on a declarative shape, not folded into this close-out". This is that card. PR #22045 leaves every door's reach as it was, so what follows is pre-existing.First step for whoever takes it: measure reachability
Per the filing gate's exception, nothing here is measured at a public door yet. The first act is to measure, per door:
The grade and the shape follow from that reading.
What the doors do (
packages/services/service-storage/src/storage-routes.ts, read onorigin/main):593) checks the upload's resume token (near:617) before it writes.:681) and the progress door (near:751) authenticate the session but check no resume token. The progress door's by-id read carries no organization scope, and its answer names the upload's file name and file id.:453) authenticates the session but checks no ownership of the file id it commits.:799,:846) runauthorizeDownloadon the row before they disclose anything. They are listed only for contrast.Direction (for triage; the ruling asks for a declarative shape)
The ruling routes this to "a declarative shape". Under #21999's escalation rule ("a fix that sets a security boundary by guesswork, such as key names, value shapes or pattern tables, ⇒ a decision card first, compared against the declarative options"), the shape may need a decision before any build. Two candidates are visible:
The seat records them only; it does not choose.
Dedupe: MCP
search_issues, repo-scoped. 「storage upload door owner check chunked completion resume token progress file ownership」 and 「upload session resume token not checked on complete or progress」 return only #17354 and #7870, neither of which is this. The positive control is those same related storage cards coming back.Dedupe words:
chunked upload completion resume token·upload progress organization scope·upload commit file ownershipGenerated by Claude Code