The onboarding wizard created targets you couldn't see, and clicking Run scan failed:
ERROR ...onboarding: Manual target scan failed for <id>: Repository <id> not found
/targets/{id}/scan routed through run_scan, which consults the global unified_pipeline flag and fell to the legacy repository pipeline (reads repositories, not onboarded_targets). And there was no dashboard page listing onboarded targets.
Agent
run_target_scan — the /targets/{id}/scan endpoint now always uses the unified run_target pipeline, independent of the transition flag (it operates on onboarded_targets by construction).
Default UNIFIED_PIPELINE on (no legacy repo data in prod). UNIFIED_PIPELINE=0 opts back out.
Scheduler now scans onboarded_targets instead of the legacy repositories collection.
Dashboard
New Targets page (/targets): onboarded targets with detected type, artifacts, findings count, applicable-scans matrix (expand), Run scan, Delete. Sidebar Repositories → Targets.
Removed the Add Repository form — onboarding is the single entry point.
delete_target server fn.
Follow-up (next PR)
Fold private-repo auth + issue tracker into the onboarding flow, editable on a target detail view ("revisit and modify at all times").
## Why
The onboarding wizard created targets you couldn't see, and clicking **Run scan** failed:
```
ERROR ...onboarding: Manual target scan failed for <id>: Repository <id> not found
```
`/targets/{id}/scan` routed through `run_scan`, which consults the global `unified_pipeline` flag and fell to the **legacy** repository pipeline (reads `repositories`, not `onboarded_targets`). And there was no dashboard page listing onboarded targets.
## Agent
- **`run_target_scan`** — the `/targets/{id}/scan` endpoint now *always* uses the unified `run_target` pipeline, independent of the transition flag (it operates on `onboarded_targets` by construction).
- **Default `UNIFIED_PIPELINE` on** (no legacy repo data in prod). `UNIFIED_PIPELINE=0` opts back out.
- **Scheduler** now scans `onboarded_targets` instead of the legacy `repositories` collection.
## Dashboard
- **New Targets page** (`/targets`): onboarded targets with detected type, artifacts, findings count, applicable-scans matrix (expand), **Run scan**, **Delete**. Sidebar *Repositories* → *Targets*.
- **Removed the Add Repository form** — onboarding is the single entry point.
- `delete_target` server fn.
## Follow-up (next PR)
- Fold private-repo **auth** + **issue tracker** into the onboarding flow, editable on a target detail view ("revisit and modify at all times").
## Verification
Local, matching CI: `cargo fmt --all --check`; clippy clean on agent, dashboard (server + web), mcp; `cargo test -p compliance-core -p compliance-agent --lib` → 32 passed.
The onboarding wizard created OnboardedTargets that were invisible in the
dashboard, and triggering a scan failed with "Repository <id> not found":
`/targets/{id}/scan` went through `run_scan`, which consulted the global
`unified_pipeline` flag and fell to the legacy repository pipeline (reads
`repositories`, not `onboarded_targets`).
Agent
- Add `ComplianceAgent::run_target_scan`, always dispatching to the unified
`run_target` pipeline. The target-scan endpoint operates on
`onboarded_targets` by construction, so it must not depend on the
transition flag. `trigger_target_scan` now calls it.
- Default `UNIFIED_PIPELINE` to on (no legacy `repositories` data in prod);
set `UNIFIED_PIPELINE=0` to opt back to the legacy pipeline.
- Scheduler now scans `onboarded_targets` (via `run_target_scan`) instead of
the legacy `repositories` collection.
Dashboard
- New Targets page (`/targets`): lists onboarded targets with detected type,
artifacts, findings count, applicable-scans matrix (on expand), plus Run
scan and Delete. Sidebar "Repositories" nav becomes "Targets".
- Remove the "Add Repository" form from the Repositories page — onboarding
is the single entry point (private-repo auth + issue tracker move into the
onboarding flow, revisable on the target).
- Add `delete_target` server fn.
Co-Authored-By: Claude Opus 4.8 <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.
Why
The onboarding wizard created targets you couldn't see, and clicking Run scan failed:
/targets/{id}/scanrouted throughrun_scan, which consults the globalunified_pipelineflag and fell to the legacy repository pipeline (readsrepositories, notonboarded_targets). And there was no dashboard page listing onboarded targets.Agent
run_target_scan— the/targets/{id}/scanendpoint now always uses the unifiedrun_targetpipeline, independent of the transition flag (it operates ononboarded_targetsby construction).UNIFIED_PIPELINEon (no legacy repo data in prod).UNIFIED_PIPELINE=0opts back out.onboarded_targetsinstead of the legacyrepositoriescollection.Dashboard
/targets): onboarded targets with detected type, artifacts, findings count, applicable-scans matrix (expand), Run scan, Delete. Sidebar Repositories → Targets.delete_targetserver fn.Follow-up (next PR)
Verification
Local, matching CI:
cargo fmt --all --check; clippy clean on agent, dashboard (server + web), mcp;cargo test -p compliance-core -p compliance-agent --lib→ 32 passed.The onboarding wizard created OnboardedTargets that were invisible in the dashboard, and triggering a scan failed with "Repository <id> not found": `/targets/{id}/scan` went through `run_scan`, which consulted the global `unified_pipeline` flag and fell to the legacy repository pipeline (reads `repositories`, not `onboarded_targets`). Agent - Add `ComplianceAgent::run_target_scan`, always dispatching to the unified `run_target` pipeline. The target-scan endpoint operates on `onboarded_targets` by construction, so it must not depend on the transition flag. `trigger_target_scan` now calls it. - Default `UNIFIED_PIPELINE` to on (no legacy `repositories` data in prod); set `UNIFIED_PIPELINE=0` to opt back to the legacy pipeline. - Scheduler now scans `onboarded_targets` (via `run_target_scan`) instead of the legacy `repositories` collection. Dashboard - New Targets page (`/targets`): lists onboarded targets with detected type, artifacts, findings count, applicable-scans matrix (on expand), plus Run scan and Delete. Sidebar "Repositories" nav becomes "Targets". - Remove the "Add Repository" form from the Repositories page — onboarding is the single entry point (private-repo auth + issue tracker move into the onboarding flow, revisable on the target). - Add `delete_target` server fn. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>a799a9890ato9717a1efda