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.
Think2m
Plan8m
Build13m
Verify6m
Assertion ledger
24 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Vue apps are detected as Vue at the stack level | verified | ok |
| A002 | Vue detection is blocked when Nuxt is present | verified | ok |
| A003 | Vue detection confidence increases with config file evidence | verified | ok |
| A004 | Library packages with vite config are not detected as surfaces | verified | ok |
| A005 | Library packages with exports field are not detected as surfaces | verified | ok |
| A006 | Deployable apps with vite config are detected as surfaces | verified | ok |
| A007 | The library guard only applies to vite configs, not other framework configs | verified | ok |
| A008 | Surfaces with vite config and Vue deps get the Vue framework label | verified | ok |
Findings 7 total
debtpackages/cli/src/engine/detectors/surfaces.ts→ scope
resolveViteFramework only handles 4 framework deps — Preact, Qwik, and other Vite-based frameworks return null
obspackages/cli/src/engine/detectors/surfaces.ts→ closed
Inline dep-to-framework map in resolveViteFramework duplicates knowledge from the framework registry
obspackages/cli/src/engine/detectors/surfaces.ts→ monitor
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.ts→ acknowledge
A011-A015 (service detection entries) have no tagged tests — verified by source inspection only
obspackages/cli/src/engine/census.ts→ closed
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