quality: scheduled OSV advisory scan (pending private routing config) - #1788
simple-agent-manager[bot] wants to merge 7 commits into
Conversation
|
|
needs-human-review: credential/infra blocker; private OSV webhook secrets and the SAM private intake route are not available for agents to complete. |
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one) (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
needs-human-review: credential/infra blocker agents cannot resolve; private OSV webhook URL/token and SAM-side intake are still missing. |
|
PR shepherd reason: credential/infra blockers agents cannot resolve — draft scheduled OSV scan is pending private routing configuration. |
|
Weekly queue reconciliation — 2026-09-23. Park decision: keep open and draft; correctly blocked. Status: draft, 44 days old (the oldest open PR), 13 files, 609 commits behind This one is parked for the right reason and should stay parked. Policy The blocker is a private intake that does not exist yet:
Both are genuinely outside what an agent can resolve. Note the scan is schedule-only with a fork guard and a dual-secret fail-closed gate, so its staleness is low-risk: it cannot fire on PRs, and with the secrets absent it fails closed rather than running degraded. That is why 609 commits behind matters far less here than on #2020 or #1817 — the surface is one scheduled workflow file, not shared CI config. Do not weaken the fail-closed gate to get this merged; policy Leaving |



Summary
5863929ace4e0670aecc767e640c068e35d6a959on PR quality: add deterministic runtime-boundary program #1784 so the broader quality program can merge independently.This PR must stay draft until the
SAM_OSV_WEBHOOK_URLandSAM_OSV_WEBHOOK_TOKENrepository secrets exist, the SAM-side private webhook intake exists, and routing has been tested end to end. It was extracted from PR #1784 specifically so that PR's quality program can merge independently.Staging verification is intentionally not applicable: this scheduled workflow cannot be exercised without the private routing configuration, which is exactly why the work is parked as draft. No staging deployment or mutation was performed.
This PR will need a rebase after PR #1784 merges. Small conflicts are expected in
.github/workflows/ci.yml,package.json, andscripts/quality/README.md.Validation
pnpm lintpnpm typecheckpnpm test— the full run reached 6,799 API tests and had three unrelated timeout-only failures; all affected files passed immediately in isolation (3 files, 125 tests)pnpm buildpnpm quality:scripts:test— 22 files, 237 testspnpm quality:osv-policygit diff --checkStaging Verification (REQUIRED for all code changes — merge-blocking)
Staging Verification Evidence
Intentionally not applicable by Raphaël's explicit instruction. The scheduled workflow cannot complete without the two repository secrets and SAM-side private intake, so staging would not provide valid end-to-end evidence. No staging workflow was triggered and no staging state was mutated.
UI Compliance Checklist (Required for UI changes)
End-to-End Verification (Required for multi-component changes)
Data Flow Trace
.github/workflows/osv-scan.ymlstarts only from the default-branch schedule, rejects forks, derives the dual-secret routing gate, and invokespnpm quality:osv-policy.scripts/quality/check-osv-policy.ts:validateOsvPolicyrejects scheduled execution when private routing is absent and validates every ignore's reason and future expiry..github/workflows/osv-scan.ymldownloads OSV-Scanner 2.5.0, verifiesosv-scanner_SHA256SUMS, and passes the verified binary path topnpm quality:osv-advisory.scripts/quality/run-osv-advisory.ts:runinvokes the scanner, parses its private temporary report, counts validated findings, and deletes the report infinally.scripts/quality/run-osv-advisory.ts:createPrivateFollowUpRequestbuilds an authenticated, idempotent summary payload;routePrivateFollowUprejects redirects and non-2xx responses.scripts/quality/run-osv-advisory.integration.test.tsexercises scanner success, scanner failure, private-intake rejection, privacy minimization, and cleanup with realistic process/HTTP boundary mocks.Untested Gaps
The actual SAM private webhook intake and repository secrets do not yet exist, so real end-to-end routing is intentionally untested. That is the activation prerequisite keeping this PR in draft; it must be completed before readiness or merge.
Post-Mortem (Required for bug fix PRs)
N/A: this is a source extraction of parked advisory infrastructure, not a bug fix.
Specialist Review Evidence (Required for agent-authored PRs)
needs-human-reviewlabel added and merge deferred to human — N/A: every reviewer completedExceptions (If any)
Agent Preflight (Required)
Classification
External References
N/A: the task required a faithful extraction from repository commit
5863929ace4e0670aecc767e640c068e35d6a959and PR #1784; no third-party API contract was changed.Codebase Impact Analysis
.github/workflows/gains the schedule-only advisory workflow and the blocking PR ignore-policy step.scripts/quality/gains the policy, advisory runner, contributor documentation, unit contracts, and scanner-to-webhook vertical slice.package.jsonexposes the two quality commands;osv-scanner.tomlowns expiring ignore policy.apps/,packages/, database, API, UI, VM, or deployment runtime path changes.Documentation & Specs
Added
scripts/quality/README.mdfor contributor-facing OSV policy, routing, privacy, and draft activation prerequisites. Public product/self-hosting docs remain intentionally unchanged until the private intake exists.Constitution & Risk Check
Reviewed Principles XI and XII. The webhook destination/token are configured repository secrets; the scanner version, schedule, workflow timeout, and protocol metadata are deliberate repository/protocol constants. The source-parity 16 MiB child-process buffer and missing self-host private-intake setup documentation remain readiness items, explicitly acceptable only while this PR is parked as draft. Primary risks are premature activation without private routing, public disclosure of advisory detail, and supply-chain compromise; schedule/fork/permission/checksum/privacy/fail-closed tests cover the extraction contract.