ONB-Epic · Multi-target artifact-aware onboarding wizard #118
Open
opened 2026-07-10 08:32:57 +00:00 by sharang
·
4 comments
No Branch/Tag Specified
main
migrate/ci-breakpilot-tld
fix/plc-refresh-control-refs
fix/plc-control-mapping
fix/refresh-control-refs
docs/mcp-loop
fix/mcp-tenant-context
feat/promote-grounded-controls
docs/control-mapping
feat/tune-semantic-retrieval
fix/embed-batch-chunking
feat/b3-architectural-controls
feat/b2-grounded-surface-checks
feat/b1-cra-semgrep-rules
feat/semantic-index-cache-autowire
feat/semantic-control-mapping
feat/oscal-emit-unmapped-mcp
feat/grounded-control-check
feat/oscal-assess-live
feat/oscal-assessment
feat/oscal-controls-provider
feat/werkbank-runnable-loop
feat/werkbank-exec-crate
feat/werkbank-runner-endpoints
feat/werkbank-job-queue
feat/werkbank-job-contract
feat/plc-provision-and-test
docs/plc-runtimes
docs/plc-soft-plc-architecture
feat/dast-http-scheme
feat/enable-optin-scans
feat/plc-control-logic-scanner
refactor/rip-out-legacy-repository
feat/onboarding-validation-edit
feat/real-nix-firmware-sbom
fix/bump-tramiton-0.4.1
feat/firmware-sbom-repro-build
feat/firmware-sbom-tramiton
feat/dashboard-targets-dropdowns
fix/targets-visibility-unified-default
feat/onboarding-scan-trigger
fix/ci-concurrency-no-cancel-main
fix/ci-docker-tramiton-dashboard-mcp
feat/onboarding-scan-detection
feat/onboarding-pipeline
feat/onboarding-wizard
fix/ci-docker-tramiton-fetch
feat/onboarding-api
feat/onboarding-migration
feat/ci-kellnr-sccache
feat/onboarding-ingest-classify
feat/onboarding-foundation
feat/dashboard-token-refresh
fix/dashboard-bearer-token
feat/m7.1-agent-wire
fix/m7.1-jwks-refresh
feat/m7.1-smoke-harness
feat/m7.1-tenant-claims
feat/light-mode-theme-toggle
fix/embedding-build-progress
fix/cve-scan-http-timeout
fix/scan-resource-limits-and-script-error
fix/multiple-issues
feat/cve-alerts
feat/e2e-tests
feat/help-chat-widget
fix/cascade-delete-repo
feat/refine-llm-prompts
fix/gitea-pr-review-error-handling
test/dummy-bad-code
fix/remove-code-review-from-findings
feat/pentest-onboarding
v0.3.0
v0.2.0
Milestone
No items
No Milestone
Onboarding v1
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: sharang/compliance-scanner-agent#118
Reference in New Issue
Block a user
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.
Epic — Multi-target, artifact-aware onboarding wizard
Problem
Onboarding today is git-only and rudimentary. Three disconnected entry points exist, each with its own bare form and no notion of what kind of software the target is:
TrackedRepository(name / git_url / branch / auth / tracker) — the SAST/SBOM/CVE/lint/secrets path (compliance-dashboard/src/pages/repositories.rs).DastTarget(base_url / WebApp|RestApi|GraphQl / auth) — the DAST path.PentestSession(target_id + repo_id + wizard config) — the pentest path.The product vision is a single workflow: onboard the target → classify it → ingest whatever artifacts exist → run the applicable scans (SAST if code, DAST if runtime/binary, active pentest if a reachable running target). That requires an onboarding that understands the full spectrum of targets — Yocto / embedded Linux, PLC / SPS (IEC 61131-3), bare-metal firmware, RTOS firmware, Android, iOS, websites, backend services, desktop apps — and knows which artifacts and scans apply to each.
Design principle (borrowed from Tramiton)
Tramiton's insight: targets look endlessly varied but fall into a small enumerable set classified by where the signal lives, and detection is table-driven — one row per type, a registry, auto-detection from artifacts. We mirror that here:
detectfor firmware; language/build-system fingerprinting for the rest). Firmware/Yocto/PLC artifacts can hand off to Tramiton for build/SBOM/repro.(target type × artifacts present) → {SAST, DAST, Pentest}sub-scans, with rationale, driving what the wizard pre-selects.Target taxonomy (v1)
Artifact kinds: git repo, source zip/tarball, firmware image/binary, APK/AAB/IPA, container image, live URL/endpoint, PLC project (PLCopen XML / ST), plaintext/free-form description.
Wizard flow (its own screens)
Sub-issues
OnboardedTarget,TargetType,Artifact) + Mongo repodetecthandoff for firmware/PLC; language + build-system fingerprinting)TrackedRepository/DastTargetinto the target modelDecision to ratify in /plan
Unify the three target models (
TrackedRepository,DastTarget, pentest target) under oneOnboardedTargetaggregate that owns a set ofArtifacts and a set of enabled scan configs — vs. keeping them separate and layering onboarding on top. Recommendation: unify, with the existing structs kept as views/back-compat during migration. /plan settles the exact shape.Sub-issue index below.
Sub-issues created (dependency order)
Backend foundation
Wizard UI
Target-family specifics
Migration
Build order: #119 then #120 and #122 in parallel, then #121, then #131; wizard #123 -> #124 -> #125 -> #126 -> #127; family specifics #128/#129/#130 after #121; #132 last.
Suite-integration workstreams added
compliance-scanner is one product in a suite; onboarding reconciles with siblings rather than duplicating them. Added three tracking issues + will build the seams (provider ports + model fields) into Steps 3–4:
tramiton detect --json; reconciliation key = firmware SHA-256 == ourArtifact.content_hash; near-term reads local.tramiton/outputs (cloud has no read API yet); entitlement via offline Ed25519LicenseGrant. Formats already match (CycloneDX/OpenVEX).ControlsProvider(built-in OSCAL vs Benjamin's breakpilot-compliance RAG — 300k+ atomic controls from ~400 laws).Seams built now (in Steps 3–4):
ExternalRef/ExternalSystem+ComplianceProfileon the target model;EvidenceProvider+ControlsProviderports in compliance-core; aTramitonCliimpl + a deterministic mock jig so CI never needs the tramiton binary; ingest computes sha256 for every blob (the tramiton match key).OT/ICS + embedded-Linux roadmap (from testing-strategy discussion)
Tracked extensions to the firmware/PLC path:
runqemu/ FirmAE / Firmadyne) → DAST + pentest against the live image's servicescve-checkTesting without hardware: OpenPLC + Beremiz + GRFICS (PLC); prebuilt Yocto qemux86-64 / IoTGoat / OpenWrt in QEMU (embedded Linux).