Non-Node Scan Enrichment (Application Shape + Python AI SDK)
The scan engine produces no application shape and no AI SDK detection for non-Node projects. A Python FastAPI project gets `shape: 'unknown'` and `aiSdk: null` even when the framework and AI dependencies are correctly detected. Two independent gaps, same disease: the engine detects non-Node signals but discards or never routes them to shape and AI SDK classification.
verdict PASSscore 18 / 18findings 4 (0 risk · 1 debt · 3 obs)duration 34mrejection cycles 0shipped May 17, 2026surface cli
Pipeline timeline
Intent to proven code in 34m across Think, Plan, Build, and Verify.
Think1m
Plan5m
Build5m
Verify5m
Assertion ledger
18 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | A Python FastAPI project is classified as an API server | verified | ok |
| A002 | A Python Typer project is classified as a CLI | verified | ok |
| A003 | A Python Django project is classified as full-stack | verified | ok |
| A004 | A Go Gin project is classified as an API server | verified | ok |
| A005 | A Go Cobra project is classified as a CLI | verified | ok |
| A006 | A Rust Axum project is classified as an API server | verified | ok |
| A007 | A Rust Clap project is classified as a CLI | verified | ok |
| A008 | A non-Node project with no detected framework gets unknown shape | verified | ok |
Findings 4 total
obspackages/cli/src/engine/scan-engine.ts→ closed
A017 has no @ana-tagged test — verified by source inspection only
debtpackages/cli/src/engine/detectors/applicationShape.ts→ closed
Module JSDoc says 'classifies Node projects' but function now also classifies non-Node
obspackages/cli/src/engine/detectors/applicationShape.ts→ closed
FRAMEWORK_TO_SHAPE map placed between JSDoc and function — unconventional positioning
obspackages/cli/tests/engine/detectors/applicationShape.test.ts→ closed
A001-A007 multi-tagged on single describe block — assertion-to-test tracing is ambiguous
Integrity seal
scopesha256:bc91fcb8ec796...
contractsha256:f6fa674e3d50a...
plansha256:85d1226c4305d...
specsha256:86f540ca84435...
build-reportsha256:b2aceae750339...
build-datasha256:2a2931fe86110...
verify-reportsha256:be26ce7a89717...
verify-datasha256:49545e057a477...
audit cmd$ ana proof audit non-node-scan-enrichment → all hashes match