WSQF-AI
Evidence-based dependability auditing


WSQF-AI extends Prof. Hironori Washizaki's Waseda Software Quality Framework (WSQF/WSQB) to AI-era repositories — measuring real ISO/IEC 25010/25059 characteristics against your source, instead of asking a model to guess a score.

pip install -e . wsqfai https://github.com/pallets/flask
208 tests passingISO/IEC 25010 · 250598 milestone slices shippedsandbox-verified security findings
Standards-based, not vibes-based

ISO/IEC 25010 and 25059 define what gets measured; WSQF/WSQB defines how it's benchmarked. Each design decision has a specific source, not a vague appeal to authority.

See the sources →

A real run, not a mockup

Output from an actual wsqfai https://github.com/pallets/flask run against Flask's real source.

236files scanned
19,188lines
13findings
1fix proposed
findings — sub-characteristic, title, location
SeveritySub-characteristicFindingLocation
highreliability / fault_toleranceBare 'except:' clausesrc/flask/app.py
mediummaintainability / modularityLarge file reduces modularitysrc/flask/cli.py
mediumreliability / fault_toleranceSwallowed exceptionsrc/flask/config.py
mediumportability / installabilityUnpinned dependenciesexamples/tutorial/pyproject.toml
a proposed fix — a real diff, generated from Flask's own file content
FileFix
src/flask/app.pyNarrowed bare 'except:' to 'except Exception:' so SystemExit/KeyboardInterrupt/GeneratorExit propagate normally.

Flask's exec() hypothesis stays unverified, honestly — sandbox verification only covers one mechanically reconstructible shape so far (a direct single-parameter shell-exec call). Point it at code that is that shape, and the sandbox actually proves the exploit instead of trusting the pattern:

a proven finding — the sandbox actually ran this function with an injection payload
SeveritySub-characteristicFindingLocation
criticalsecurity / integrityProven command injection in ping_host() sandbox-confirmednetdiag.py

The exact same static pattern in a function that validates its input first is correctly cleared instead — verification runs the real code, it doesn't trust the match.

How it's built

A milestone is only marked done once it's real, tested code — never because a plan for it exists.

M1Ingestion & canonical modelFinding / Evidence / Observation, ISO/IEC 25000-2 vocabularyDone
M2SQuaRE quality measurementMaintainability + Reliability + Portability real; two characteristics remainPartial
M3AI/ML quality extensionML-repository detection + ML Versioning check; catalogue patterns remainPartial
M4Security, proven not assertedAST hypothesis generation + real sandbox verification (one shape so far, kernel-confined)Partial
M5Evidence & benchmark engineCorpus-comparison methodology real; a curated reference corpus remainsPartial
M7Remediation & real backendReal auto-fix diffs, a FastAPI service, GitHub PR delivery — this page is nextPartial