Repository navigation
✨ feat: opt-in Spektacular recheck outward discovery (takeover of PR 10677) - #10752
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
|
Supersession sweep found that this PR's claimed issue is already closed by another merged PR.
A different merged PR closed the claimed issue. Leaving this contributor PR open for a human to review. This comment is edited in place by the supersession sweep; it is not duplicated. |
692fea2 to
766fb16
Compare
Capture bounded declared-document evidence through an explicit relay proxy before starting a recheck spec lease. Enforce exact-host egress validation and preserve source snapshots on the revision. Hive-Run: #10667 Hive-Plan: #10652/outward-looking-discovery Hive-Spec: src/docs/spektacular.md#continuous-convergence Signed-off-by: Andrew Anderson <andy@clubanderson.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: arteeh <arteeh@users.noreply.github.com>
766fb16 to
4b61e2d
Compare
|
hive/awaiting-ci: CI pending — sweep will merge when green. 🐝 Hive Agent: — hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88 |
There was a problem hiding this comment.
The code does what the body says — I read the new files and the v5 callers, not just the diff. The egress envelope checks out: http.ProxyURL ignores NO_PROXY, exact-host allowlist, HTTPS/443 only, userinfo and fragments rejected, redirects refused, LimitReader(32 KiB+1) + UTF-8 check. And the "evidence only" claim holds on this head: drift_source[] is persisted and projected via campaignDriftFromArchive, but recheckSpecStageTitle (src/pkg/dashboard/stage_leases.go:901-907) iterates only Drift.External, so nothing fetched here reaches a spec prompt.
What I can't settle, and think a maintainer should before this lands: v5 already carries an outward-discovery schema from #10683 — runs.spektacular.recheck.discovery.sources[] with kinds upstream_release/repo_activity/standards_feed/landscape and field url_or_repo (src/pkg/config/runs_config.go:180-194), validated against variables.security.http_allowlist (src/pkg/config/validate.go:42-43). This PR adds a sibling schema: runs.spektacular.recheck.sources[] with kinds release/changelog/repo/standards/landscape and field url, plus discovery_proxy and egress_allowlist, validated by a separate ValidateDiscovery (src/pkg/config/spektacular_discovery.go:20) that never consults http_allowlist. Net effect: two source lists with overlapping kind vocabulary and two allowlists for one feature, and the proxy/no-redirect envelope applies only to the new path while the existing collector still uses http.DefaultClient (src/pkg/dashboard/recheck_discovery.go:51).
The one-sentence question: should exact-document snapshots be a fourth kind under the existing recheck.discovery.sources (reusing variables.security.http_allowlist), or is a separate recheck.sources + egress_allowlist surface intended — and if the latter, should the stricter proxy envelope also be applied to the #10683 path?
Smaller, verified: the spektacular.md rewrite deletes the "Supported source kinds" prose for the existing discovery.sources (those kinds are still implemented at recheck_discovery.go:79-84 and still appear in the YAML example), so readers can no longer learn what url_or_repo accepts per kind. Worth restoring alongside the new section.
Since this supersedes #10677, a maintainer may want to close that one once this is decided. I have not closed or changed anything.
— hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Supersedes #10677 — carries @arteeh's commit with authorship preserved, rebased onto v5.
Refs #10667 (closed by #10683) and #10734.
Summary
runs.spektacular.recheck.sourcesdiscovery path with durabledrift.drift_sourceevidence.NO_PROXYbypass, 16-source / 30s / 10s / 32 KiB bounds.runs.spektacular.recheck.discoveryrelease/activity/feed evidence.TestRecheckDiscoveryFeedFiltersSinceAndCapsactive; it is no longer skipped on current v5.Validation
gofmt -lon touched Go filesgit diff --check HEAD~1..HEAD