Skip to content
#software testing Open access

pq-verify: Independent verification for ML-KEM / ML-DSA implementations

Sep 2026 · Zenodo (CERN European Organization for Nuclear Research)

Abstract

Fixed --vector-dir was ignored for every bundled file. The loader consulted the pinned bundle first by file name, so a caller-supplied vector directory was never read for any file pq-verify also ships, while the report named that directory as the source. A directory with a corrupted expected answer reported 240/240; it now reports 239/240. The same loader serves prompt_dir and the prompt/response path. The bundle now answers only for pq-verify's own vectors directory, and a file missing from a supplied directory is an error rather than a silent fallback to the bundle. Added Vendor audits run in CI, pinned. tools/vendor_audits.json pins each audited third-party ML-KEM library to an exact commit with the result pq-verify must reproduce; tools/vendor_audit.py rebuilds every row and re-runs --audit-kem on each change to pq-verify and weekly. With the library, the vectors and the reference implementations all pinned, a failure can only mean pq-verify changed. Reintroducing the 2.8.0 symbol-resolution bug fails it on all three mlkem-native rows. Rows are only added, so the table records when a library's behaviour changes, and a test holds AUDITS.md equal to it. Results name the reference implementation that computed them. Next to the pinned vector revision, each ACVP run prints and records the version of the library that answered it (reference: kyber-py 1.2.0), in the console and in the JSON report's suites. The vectors were pinned; the software answering them was whatever happened to be installed, and nothing said which. CI pins those versions (constraints-reference.txt), so a CI result changes only when pq-verify's code does. Bumping one is its own PR. Users are not held to the pins, and tools/doctor.py warns when an environment differs from them. tools/doctor.py — the checks a NIST re-pin must pass. In the style of the syndicate-genesis and Dharmapala doctors: statuses ok / DECIDE / WARN / BLOCK, each finding with a next: command, --json for agents, and a token hashing what was examined and found. Offline it checks that the pinned bundle is sound: manifest coverage, NIST commit per file, watcher coverage, and FIPS 203 length of every key-check key. With --candidate it fetches NIST's changed files and runs, side by side with the pinned bundle: the same length checks, a negative control (a length-only checker must be fooled by every invalid key), every ACVP suite, a 14-day stability rule and provenance. --apply re-pins deterministically (byte-identical to the 2.8.1 re-pin done by hand) and is refused while the candidate BLOCKs. Replayed on history, it BLOCKs the vectors 2.8.0 shipped, which the ACVP suite scored 240/240. REPINNING.md — the procedure from watcher alert to release. The watcher's issue now names the doctor commands, and CI runs the doctor offline on every change. Verifying this release gh attestation verify pq_verify-2.8.2-py3-none-any.whl \ --repo bigDSanalyst/pq-verify Built by .github/workflows/release.yml from commit e6d6ba02c6ea19dcd976a2f8229c54b4eeb917e8, after the full suite and all 855 NIST ACVP vectors passed on Python 3.9 through 3.13. An SPDX SBOM is attached and attested.

View source

Similar papers

#computer vision Review Sep 2017

Agile Software Development Methods: Review and Analysis

This publication proposes a definition and a classification of agile software development approaches and analyses ten software development methods that can be characterized as being "agile" against the defined criterion.

P. Abrahamsson, O. Salo, Jussi Ronkainen et al. · 727 citations · ⚡54
#computer vision Jun 2008

The impact of agile practices on communication in software development

The study shows that agile practices improve both informal and formal communication, but indicates that, in larger development situations involving multiple external stakeholders, a mismatch of adequate communication mechanisms can sometimes even hinder the communication.

M. Pikkarainen, Jukka Haikara, O. Salo et al. · 401 citations · ⚡48
#machine learning Review Open access Oct 2014

Software development in startup companies: A systematic mapping study

The results indicate that software engineering work practices are chosen opportunistically, adapted and configured to provide value under the constrains imposed by the startup context.

Nicolò Paternoster, Carmine Giardino, M. Unterkalmsteiner et al. · 394 citations · ⚡54
#computer vision Review Mar 2008

Agile methods in European embedded software development organisations: a survey on the actual use and usefulness of Extreme Programming and Scrum

The results show that the embedded industry has been able to apply agile methods in its development processes and that the appreciation of the agile methods and their individual practices appears to increase once adopted and applied in practice.

O. Salo, P. Abrahamsson · 238 citations · ⚡9
#computer vision Open access Jul 2017

What happens when software developers are (un)happy

Consequences of happiness and unhappiness that are beneficial and detrimental for developers' mental well-being, the software development process, and the produced artifacts are found.

D. Graziotin, Fabian Fagerholm, Xiaofeng Wang et al. · 236 citations · ⚡13
#computer vision Open access Oct 2004

Mobile-D: an agile approach for mobile application development

The Mobile-D approach is briefly outlined here and the experiences gained from four case studies are discussed, which helped develop an agile development approach for mobile application development.

P. Abrahamsson, Antti Hanhineva, H. Hulkko et al. · 225 citations · ⚡18

Related blog posts

MIT News · Artificial Intelligence Oct 2, 2026

Documenting the tech worker movement

Writing as a participant and researcher, PhD student JS Tan SM ’22 has co-authored a new book about the rise of tech worker protests and the employer backlash that followed.

GPT-Lab Sep 23, 2026

Requirements Don’t Live in Isolation: What We’re Exploring with Req-Space

Requirements in large systems rarely exist in isolation. Their meaning depends on the wider project context - other requirements, policies, decisions, tests, and implementation details. That becomes especially important when AI is used for review, because spotting a possible conflict or gap is only the beginning. ReqSpace explores how AI, visualisation, and connected project context can help reviewers understand those findings, trace the relationships behind them, and focus on the questions that…

GPT-Lab Sep 17, 2026

Beyond Prompt Engineering: The Role of Tacit Knowledge in Software Engineering

AI is making software generation faster, but speed does not remove the need for expertise. As more work is delegated to AI, tacit knowledge may become one of the most important human advantages in software engineering. The post Beyond Prompt Engineering: The Role of Tacit Knowledge in Software Engineering appeared first on GPT-Lab.

We use cookies to run the site and, with your consent, for analytics and to show ads. See our Cookie Policy.