Maestro task c15ed4b5-25ae-43c6-8d36-f4a6dd51e5af. Fixes the pre-existing HIGH leak (BASE-01) where Feature 18 idea results returned raw source_url/site_name: the source is now produced only by the dinners package's SourceOf (same secrecy rules), so a token-bearing URL or host-derived name never reaches a client. See the developer report on the PR.
Maestro task c15ed4b5-25ae-43c6-8d36-f4a6dd51e5af. Fixes the pre-existing HIGH leak (BASE-01) where Feature 18 idea results returned raw source_url/site_name: the source is now produced only by the dinners package's SourceOf (same secrecy rules), so a token-bearing URL or host-derived name never reaches a client. See the developer report on the PR.
Cook from what I have and Quick dinners ideas returned the grounded
recipe's raw source_url and site_name, so a link carrying a token in its
query or userinfo, or a stored name taken from its host, reached the
client in the job response (BASE-01).
dinners.SourceOf is now the one way a fetched recipe's source reaches a
client: the dinner detail and both idea result builders use it. An
idea's source_url and site_name are null when they could leak a secret,
and a source that does not parse fails the job instead of being shown.
Task: c15ed4b5-25ae-43c6-8d36-f4a6dd51e5af
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GET /jobs/{id} served a succeeded idea job's stored result as it was, so
a result stored before sources were made safe still showed a
token-bearing source_url and a site_name taken from the link's host
(BASE-01-R1). jobs.Kind.FailedResult becomes ShownResult, applied to
every stored result with the job's status: ideas_from_ingredients and
quick_ideas results show no ideas when failed and, otherwise, each
idea's source through dinners.SourceOf, the one rule, so no job old or
new serves an unsafe source. Other kinds' results are untouched.
dinners.SourceOf now parses the link before reading the site name, so a
link that does not parse is an error with or without a stored name, and
an idea job grounded in one fails instead of succeeding (BASE-01-R2).
Task: c15ed4b5-25ae-43c6-8d36-f4a6dd51e5af
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Maestro task c15ed4b5-25ae-43c6-8d36-f4a6dd51e5af. Fixes the pre-existing HIGH leak (BASE-01) where Feature 18 idea results returned raw source_url/site_name: the source is now produced only by the dinners package's SourceOf (same secrecy rules), so a token-bearing URL or host-derived name never reaches a client. See the developer report on the PR.
Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
GET /jobs/{id} served a succeeded idea job's stored result as it was, so a result stored before sources were made safe still showed a token-bearing source_url and a site_name taken from the link's host (BASE-01-R1). jobs.Kind.FailedResult becomes ShownResult, applied to every stored result with the job's status: ideas_from_ingredients and quick_ideas results show no ideas when failed and, otherwise, each idea's source through dinners.SourceOf, the one rule, so no job old or new serves an unsafe source. Other kinds' results are untouched. dinners.SourceOf now parses the link before reading the site name, so a link that does not parse is an error with or without a stored name, and an idea job grounded in one fails instead of succeeding (BASE-01-R2). Task: c15ed4b5-25ae-43c6-8d36-f4a6dd51e5af Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.