Fix Vite Framework Detection and Service Detection Gaps

The scanner's framework detection is config-file-only. Modern Vue 3 and React+Vite apps use `vite.config.ts` — not framework-specific config files like `vue.config.ts` (legacy Vue CLI) or `next.config.ts`. Some don't use any config file at all (hoppscotch-common runs `vite` directly via script). This makes major open-source repos invisible: hoppscotch (70K stars) shows no framework, "unknown" shape, and 4 missing surfaces. novu's 1416-file React dashboard has no framework label. twenty's 7794-file React frontend is invisible as a surface.

verdict PASSscore 24 / 24findings 7 (0 risk · 2 debt · 5 obs)duration 42mrejection cycles 0shipped Jun 2, 2026surface cli

Pipeline timeline

Intent to proven code in 42m across Think, Plan, Build, and Verify.

Think
2m
Plan
8m
Build
13m
Verify
6m

Assertion ledger

24 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001Vue apps are detected as Vue at the stack levelverifiedok
A002Vue detection is blocked when Nuxt is presentverifiedok
A003Vue detection confidence increases with config file evidenceverifiedok
A004Library packages with vite config are not detected as surfacesverifiedok
A005Library packages with exports field are not detected as surfacesverifiedok
A006Deployable apps with vite config are detected as surfacesverifiedok
A007The library guard only applies to vite configs, not other framework configsverifiedok
A008Surfaces with vite config and Vue deps get the Vue framework labelverifiedok

Findings 7 total

debtpackages/cli/src/engine/detectors/surfaces.tsscope
resolveViteFramework only handles 4 framework deps — Preact, Qwik, and other Vite-based frameworks return null
obspackages/cli/src/engine/detectors/surfaces.tsclosed
Inline dep-to-framework map in resolveViteFramework duplicates knowledge from the framework registry
obspackages/cli/src/engine/detectors/surfaces.tsmonitor
Signal 2 (apps/ directory) does not apply the library guard — a library package under apps/ with vite.config.ts and hasMain would still be detected as surface
obspackages/cli/src/engine/scan-engine.tsacknowledge
A011-A015 (service detection entries) have no tagged tests — verified by source inspection only
obspackages/cli/src/engine/census.tsclosed
A019 (FRAMEWORK_HINTS vite count) has no tagged test — FRAMEWORK_HINTS is not exported so cannot be unit-tested directly
+2more findings

Integrity seal

scopesha256:2a31bb2e3d4bc...
contractsha256:f07336a74e725...
plansha256:9fd43f0e5bff9...
specsha256:70dda41163e7a...
build-reportsha256:3ef2e0229dced...
build-datasha256:a0cae089a7771...
verify-reportsha256:5007c4f5aedd4...
verify-datasha256:0704a0df03021...
audit cmd$ ana proof audit fix-vite-framework-detection   → all hashes match