Système de test et de qualité
Des gardes narrés comme spécifications, numpy et LAPACK pour oracles, une porte adversariale avec contrôles négatifs, une seule porte de règles ; ni couverture ni intégration continue.
4 Strong · 6 Solid · 2 Partial · 0 Emerging
Mesuré contre : pytest · Hypothesis · libFuzzer · SonarQube · Dossiers : base/test(s'ouvre dans un nouvel onglet) · base/meta(s'ouvre dans un nouvel onglet) · base/engine(s'ouvre dans un nouvel onglet) · Pour les programmeurs : la référence de ce domaine

Repensé depuis les premiers principes
Ce que Softanza a gardé de ce qui marche, et ce qu'elle a repensé, tel que la bibliothèque l'a écrit dans ses documents de conception et ses narrations.
La manière SoftanzaChaque valeur attendue écrite est une promesse, et elle ne compte que lorsqu'une exécution qui aurait pu échouer l'a tenue.
Gardé des meilleures pratiques
- Les tests sont des scénarios Given, When, Then : la sortie se lit comme une spécification, et un échec montre la valeur attendue et la valeur obtenue. source(s'ouvre dans un nouvel onglet)
- Les analyseurs du moteur exposés aux entrées hostiles passent au fuzzing, et les tests de propriétés sont vérifiés par mutation : des versions volontairement fausses doivent échouer. source(s'ouvre dans un nouvel onglet)
- Les résultats sont comparés à une référence indépendante : des valeurs produites par NumPy pour les matrices, et par R pour les lissages statistiques. source(s'ouvre dans un nouvel onglet)
Repensé
- Des milliers de lignes d'exemple notent ce qu'elles doivent afficher. Personne ne les comparait : un banc d'essai exécute désormais chaque fichier et vérifie ces promesses dans l'ordre. source(s'ouvre dans un nouvel onglet)
- Un test qui ne peut que réussir ne prouve rien : tout cas positif a son jumeau négatif, et l'outil est essayé sur de fausses promesses, pour le voir échouer. source(s'ouvre dans un nouvel onglet)
- Une identité n'est pas une vérification : une formule tirée d'un seul jeu de chiffres ne peut jamais échouer. Une vraie vérification compare deux mesures indépendantes d'une même réalité. source(s'ouvre dans un nouvel onglet)
- La suite complète est une barrière passée une fois avant chaque commit, pas après chaque modification. Les nouveaux contrôles naissent en sondes isolées : verdict en quelques secondes. source(s'ouvre dans un nouvel onglet)
Softanza has no test framework as a module; it has a test-and-quality discipline spread across the estate, whose signature is that a test is a readable specification and a green checkmark is never enough. 455 narrated guards read as Given/When/Then specs, correctness is proven against independent numpy/LAPACK oracles and byte-parity ground truth, and an adversarial gate of 1,416 assertions carries 58 negative controls. Where it is thin: property/mutation is engine-only, there is no coverage instrumentation and no CI, and the classic suites carry a fidelity backlog.
Ce qu'un artisan en fait, et ce qui se distingue
- A test is a readable specification: 455 narrated Given/When/Then guards
- Correctness proven against independent numpy/LAPACK oracles, not self-captured snapshots
- An adversarial gate of 1,416 assertions each born from an escaped defect, with 58 negative controls
- One rule gate collecting code, security, agent and diagram findings in a single shape
Ce qui est dû
- A standard CI pipeline running the rule gate on every push
- Coverage instrumentation (line/branch) for the engine and guards
- Haro-side property testing and a shipped assertion module
- Close the fidelity-grind backlog (1,312 #ERR in the classic suites)
La manière Softanza, exécutée
Ce que Softanza fait autrement dans ce domaine, montré par du code tiré de ses narrations et de ses gardes, et exécuté pour cette page.
Le vérificateur qui garde le modèle de menaces honnête est lui-même vu attraper une fausse ligne sans preuve et un test qui n'existe pas.
cFake = "## 3. Guarantees" + char(10) +
"| G98 | a claim | code | `base/test/security/no_such_guard_narrated.ring` (5) | A01 | - |" + char(10) +
"| G99 | an unproven claim | code | nothing here | A01 | - |" + char(10) +
"## 4. Open risks" + char(10)
aFR = GuaranteeRows(cFake)
Then("it reads both fake rows", len(aFR), 2)
Then("it flags the row with no proof", len(RowsWithoutProof(aFR)), 1)
Then("it flags the guard that does not exist", len(MissingPaths(GuardPaths(aFR))), 1)THEN it reads both fake rows [PASS] THEN it flags the row with no proof [PASS] THEN it flags the guard that does not exist [PASS]
exécuté le 2026-10-01 21:18 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/security/threat_model_narrated.ring(s'ouvre dans un nouvel onglet)
Les couloirs, un par un
Les couloirs et leurs notes sont cités tels qu'ils ont été lus à la source, le Read from the source on 2026-09-17, from a read-only main worktree -- base/test/_narrated (455 guards), base/meta/promises.py (~8,500 #--> markers), engine test blocks (151/371 files), fuzzers and props, _gen_numpy_reference.py, plot.zig, stzRuleReport + stzPredicateSet, health in base/test/_STATUS.md / _FINDINGS.md.

